01 Aug, 2006

14 commits

  • kernel/timer.c defines a (per-cpu) pointer to tvec_base_t, but initializes
    it using { &a_tvec_base_t }, which sparse warns about; change this to just
    &a_tvec_base_t.

    Signed-off-by: Josh Triplett
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • In order to prevent Doc Rot, this patch adds a reference to the design
    document for rtmutex.c in rtmutex.c. So when someone needs to update or
    change the design of that file they will know that a document actually
    exists that explains the design (helping them change it), and hopefully
    that they will update the document if they too change the design.

    Signed-off-by: Steven Rostedt
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steven Rostedt
     
  • The recent changes from irqtrace feature has added overheads to
    local_bh_disable and local_bh_enable that reduces UDP performance across
    x86_64 and IA64, even though IA64 does not support the irqtrace feature.
    Patch in question is

    [PATCH]lockdep: irqtrace subsystem, core
    http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=c
    ommit;h=de30a2b355ea85350ca2f58f3b9bf4e5bc007986

    Prior to this patch, local_bh_disable was a short macro. Now it is a
    function which calls __local_bh_disable with added irq flags save and
    restore. The irq flags save and restore were also added to
    local_bh_enable, probably for injecting the trace irqs code.

    This overhead is on the generic code path across all architectures. On a
    IA_64 test machine (Itanium-2 1.6 GHz) running a benchmark like netperf's
    UDP streaming test, the added overhead results in a drop of 3% in
    throughput, as udp_sendmsg calls the local_bh_enable/disable several times.

    Other workloads that have heavy usages of local_bh_enable/disable could
    also be affected. The patch ideally should not have affected IA-64
    performance as it does not have IRQ tracing support. A significant portion
    of the overhead is in the added irq flags save and restore, which I think
    is not needed if IRQ tracing is unused. A suggested patch is attached
    below that recovers the lost performance. However, the "ifdef"s in the
    patch are a bit ugly.

    Signed-off-by: Tim Chen
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tim Chen
     
  • Initialize init task's pi_waiters plist. Otherwise cpu hotplug of cpu 0
    might crash, since rt_mutex_getprio() accesses an uninitialized list head.

    call chain which led to crash:

    take_cpu_down
    sched_idle_next
    __setscheduler
    rt_mutex_getprio

    Using PLIST_HEAD_INIT in the INIT_TASK macro doesn't work unfortunately,
    since the pi_waiters member is only conditionally present.

    Cc: Arjan van de Ven
    Cc: Thomas Gleixner
    Acked-by: Ingo Molnar
    Signed-off-by: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • kernel/workqueue.c was omitted from generating kernel documentation. This
    adds a new section "Workqueues and Kevents" and adds documentation for some
    of the functions.

    Some functions in this file already had DocBook-style comments, now they
    finally become visible.

    Signed-off-by: Rolf Eike Beer
    Cc: "Randy.Dunlap"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rolf Eike Beer
     
  • In cond_resched_lock() it calls __resched_legal() before dropping the spin
    lock. __resched_legal() will always finds the preempt_count non-zero and
    will prevent the call to __cond_resched().

    The attached patch adds a parameter to __resched_legal() with the expected
    preempt_count value.

    Cc: Ingo Molnar
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Houston
     
  • We have

    #define INDEX(N) (base->timer_jiffies >> (TVR_BITS + N * TVN_BITS)) & TVN_MASK

    and it's used via

    list = varray[i + 1]->vec + (INDEX(i + 1));

    So, due to underparenthesisation, this INDEX(i+1) is now a ... (TVR_BITS + i
    + 1 * TVN_BITS)) ...

    So this bugfix changes behaviour. It worked before by sheer luck:

    "If i was anything but 0, it was broken. But this was only used by
    s390 and arm. Since it was for the next interrupt, could that next
    interrupt be a problem (going into the second cascade)? But it was
    probably seldom wrong. That is, this would fail if the next
    interrupt was in the second cascade, and was wrapped. Which may
    never of happened. Also if it did happen, it would have just missed
    the interrupt.

    If an interrupt was missed, and no one was there to miss it, was it
    really missed :-)"

    Signed-off-by: Steven Rostedt
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steven Rostedt
     
  • Few of the callback functions and notifier blocks that are associated with cpu
    notifications incorrectly have __devinit and __devinitdata. They should be
    __cpuinit and __cpuinitdata instead.

    It makes no functional difference but wastes text area when CONFIG_HOTPLUG is
    enabled and CONFIG_HOTPLUG_CPU is not.

    This patch fixes all those instances.

    Signed-off-by: Chandra Seetharaman
    Cc: Ashok Raj
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chandra Seetharaman
     
  • Kprobe inserts breakpoint instruction in probepoint and then jumps to
    instruction slot when breakpoint is hit, the instruction slot icache must
    be consistent with dcache. Here is the patch which invalidates instruction
    slot icache area.

    Without this patch, in some machines there will be fault when executing
    instruction slot where icache content is inconsistent with dcache.

    Signed-off-by: bibo,mao
    Acked-by: "Luck, Tony"
    Acked-by: Keshavamurthy Anil S
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    bibo, mao
     
  • Enable delay accounting by default so that feature gets coverage testing
    without requiring special measures.

    Earlier, it was off by default and had to be enabled via a boot time param.
    This patch reverses the default behaviour to improve coverage testing. It
    can be removed late in the kernel development cycle if its believed users
    shouldn't have to incur any cost if they don't want delay accounting. Or
    it can be retained forever if the utility of the stats is deemed common
    enough to warrant keeping the feature on.

    Signed-off-by: Shailabh Nagar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • Add a missing freeing of skb in the case there are no listeners at all.
    Also remove the returning of error values by the function as it is unused
    by the sole caller.

    Signed-off-by: Shailabh Nagar
    Signed-off-by: Chandra Seetharaman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • Complete the separation of delay accounting and taskstats by ignoring the
    return value of delay accounting functions that fill in parts of taskstats
    before it is sent out (either in response to a command or as part of a task
    exit).

    Also make delayacct_add_tsk return silently when delay accounting is turned
    off rather than treat it as an error.

    Signed-off-by: Shailabh Nagar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • IRQs need refcounting and a state flag to track whether the the IRQ should
    be enabled or disabled as a "normal IRQ" source after a series of calls to
    {en,dis}able_irq(). For shared IRQs, the IRQ must be enabled so long as at
    least one driver needs it active.

    Likewise, IRQs need the same support to track whether the IRQ should be
    enabled or disabled as a "wakeup event" source after a series of calls to
    {en,dis}able_irq_wake(). For shared IRQs, the IRQ must be enabled as a
    wakeup source during sleep so long as at least one driver needs it. But
    right now they _don't have_ that refcounting ... which means sharing a
    wakeup-capable IRQ can't work correctly in some configurations.

    This patch adds the refcount and flag mechanisms to set_irq_wake() -- which
    is what {en,dis}able_irq_wake() call -- and minimal documentation of what
    the irq wake mechanism does.

    Drivers relying on the older (broken) "toggle" semantics will trigger a
    warning; that'll be a handful of drivers on ARM systems.

    Signed-off-by: David Brownell
    Acked-by: Ingo Molnar
    Acked-by: Thomas Gleixner
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Use the correct groups while initializing sched groups power for
    allnodes_domain. This fixes the crash observed while creating exclusive
    cpusets.

    Signed-off-by: Suresh Siddha
    Reported-and-tested-by: Paul Jackson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Siddha, Suresh B
     

29 Jul, 2006

2 commits

  • Fix robust PI-futexes to be properly unlocked on unexpected exit.

    For this to work the kernel has to know whether a futex is a PI or a
    non-PI one, because the semantics are different. Since the space in
    relevant glibc data structures is extremely scarce, the best solution is
    to encode the 'PI' information in bit 0 of the robust list pointer.
    Existing (non-PI) glibc robust futexes have this bit always zero, so the
    ABI is kept. New glibc with PI-robust-futexes will set this bit.

    Further fixes from Thomas Gleixner

    Signed-off-by: Ingo Molnar
    Signed-off-by: Ulrich Drepper
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Fix pi_state->list handling bugs: list handling mishap, locking error.
    Plus add more debug checks and fix a few style issues i noticed while
    debugging this.

    (reported by Ulrich Drepper and Jakub Jelinek.)

    Signed-off-by: Ingo Molnar
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

24 Jul, 2006

2 commits

  • Fix ABBA deadlock between lock_cpu_hotplug() and the cpuset
    callback_mutex lock.

    It only happens on cpu_exclusive cpusets, due to the dynamic
    sched domain code trying to take the cpu hotplug lock inside
    the cpuset callback_mutex lock.

    This bug has apparently been here for several months, but didn't
    get hit until the right customer load on a large system.

    This fix appears right from inspection, but it will take a few
    more days running it on that customers workload to be confident
    we nailed it. We don't have any other reproducible test case.

    The cpu_hotplug_lock() tends to cover large runs of code.
    The other places that hold both that lock and the cpuset callback
    mutex lock always nest the cpuset lock inside the hotplug lock.
    This place tries to do the reverse, risking an ABBA deadlock.

    This is in the cpuset_rmdir() code, where we:
    * take the callback_mutex lock
    * mark the cpuset CS_REMOVED
    * call update_cpu_domains for cpu_exclusive cpusets
    * in that call, take the cpu_hotplug lock if the
    cpuset is marked for removal.

    Thanks to Jack Steiner for identifying this deadlock.

    The fix is to tear down the dynamic sched domain before we grab
    the cpuset callback_mutex lock. This way, the two locks are
    serialized, with the hotplug lock taken and released before
    trying for the cpuset lock.

    I suspect that this bug was introduced when I changed the
    cpuset locking from one lock to two. The dynamic sched domain
    dependency on cpu_exclusive cpusets and its hotplug hooks were
    added to this code earlier, when cpusets had only a single lock.
    It may well have been fine then.

    Signed-off-by: Paul Jackson
    Signed-off-by: Linus Torvalds

    Paul Jackson
     
  • The CPU hotplug locking was quite messy, with a recursive lock to
    handle the fact that both the actual up/down sequence wanted to
    protect itself from being re-entered, but the callbacks that it
    called also tended to want to protect themselves from CPU events.

    This splits the lock into two (one to serialize the whole hotplug
    sequence, the other to protect against the CPU present bitmaps
    changing). The latter still allows recursive usage because some
    subsystems (ondemand policy for cpufreq at least) had already gotten
    too used to the lax locking, but the locking mistakes are hopefully
    now less fundamental, and we now warn about recursive lock usage
    when we see it, in the hope that it can be fixed.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

15 Jul, 2006

17 commits

  • In send_cpu_listeners(), which is called on the exit path, a down_write()
    was protecting operations like skb_clone() and genlmsg_unicast() that do
    GFP_KERNEL allocations. If the oom-killer decides to kill tasks to satisfy
    the allocations,the exit of those tasks could block on the same semphore.

    The down_write() was only needed to allow removal of invalid listeners from
    the listener list. The patch converts the down_write to a down_read and
    defers the removal to a separate critical region. This ensures that even
    if the oom-killer is called, no other task's exit is blocked as it can
    still acquire another down_read.

    Thanks to Andrew Morton & Herbert Xu for pointing out the oom related
    pitfalls, and to Chandra Seetharaman for suggesting this fix instead of
    using something more complex like RCU.

    Signed-off-by: Chandra Seetharaman
    Signed-off-by: Shailabh Nagar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • On systems with a large number of cpus, with even a modest rate of tasks
    exiting per cpu, the volume of taskstats data sent on thread exit can
    overflow a userspace listener's buffers.

    One approach to avoiding overflow is to allow listeners to get data for a
    limited and specific set of cpus. By scaling the number of listeners
    and/or the cpus they monitor, userspace can handle the statistical data
    overload more gracefully.

    In this patch, each listener registers to listen to a specific set of cpus
    by specifying a cpumask. The interest is recorded per-cpu. When a task
    exits on a cpu, its taskstats data is unicast to each listener interested
    in that cpu.

    Thanks to Andrew Morton for pointing out the various scalability and
    general concerns of previous attempts and for suggesting this design.

    [akpm@osdl.org: build fix]
    Signed-off-by: Shailabh Nagar
    Signed-off-by: Balbir Singh
    Signed-off-by: Chandra Seetharaman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • Send per-tgid data only once during exit of a thread group instead of once
    with each member thread exit.

    Currently, when a thread exits, besides its per-tid data, the per-tgid data
    of its thread group is also sent out, if its thread group is non-empty.
    The per-tgid data sent consists of the sum of per-tid stats for all
    *remaining* threads of the thread group.

    This patch modifies this sending in two ways:

    - the per-tgid data is sent only when the last thread of a thread group
    exits. This cuts down heavily on the overhead of sending/receiving
    per-tgid data, especially when other exploiters of the taskstats
    interface aren't interested in per-tgid stats

    - the semantics of the per-tgid data sent are changed. Instead of being
    the sum of per-tid data for remaining threads, the value now sent is the
    true total accumalated statistics for all threads that are/were part of
    the thread group.

    The patch also addresses a minor issue where failure of one accounting
    subsystem to fill in the taskstats structure was causing the send of
    taskstats to not be sent at all.

    The patch has been tested for stability and run cerberus for over 4 hours
    on an SMP.

    [akpm@osdl.org: bugfixes]
    Signed-off-by: Shailabh Nagar
    Signed-off-by: Balbir Singh
    Cc: Jay Lan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • Export I/O delays seen by a task through /proc//stats for use in top
    etc.

    Note that delays for I/O done for swapping in pages (swapin I/O) is clubbed
    together with all other I/O here (this is not the case in the netlink
    interface where the swapin I/O is kept distinct)

    [akpm@osdl.org: printk warning fix]
    Signed-off-by: Shailabh Nagar
    Signed-off-by: Balbir Singh
    Cc: Jes Sorensen
    Cc: Peter Chubb
    Cc: Erich Focht
    Cc: Levent Serinol
    Cc: Jay Lan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • Usage of taskstats interface by delay accounting.

    Signed-off-by: Shailabh Nagar
    Signed-off-by: Balbir Singh
    Cc: Jes Sorensen
    Cc: Peter Chubb
    Cc: Erich Focht
    Cc: Levent Serinol
    Cc: Jay Lan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • Create a "taskstats" interface based on generic netlink (NETLINK_GENERIC
    family), for getting statistics of tasks and thread groups during their
    lifetime and when they exit. The interface is intended for use by multiple
    accounting packages though it is being created in the context of delay
    accounting.

    This patch creates the interface without populating the fields of the data
    that is sent to the user in response to a command or upon the exit of a task.
    Each accounting package interested in using taskstats has to provide an
    additional patch to add its stats to the common structure.

    [akpm@osdl.org: cleanups, Kconfig fix]
    Signed-off-by: Shailabh Nagar
    Signed-off-by: Balbir Singh
    Cc: Jes Sorensen
    Cc: Peter Chubb
    Cc: Erich Focht
    Cc: Levent Serinol
    Cc: Jay Lan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • Make the task-related schedstats functions callable by delay accounting even
    if schedstats collection isn't turned on. This removes the dependency of
    delay accounting on schedstats.

    Signed-off-by: Chandra Seetharaman
    Signed-off-by: Shailabh Nagar
    Signed-off-by: Balbir Singh
    Cc: Jes Sorensen
    Cc: Peter Chubb
    Cc: Erich Focht
    Cc: Levent Serinol
    Cc: Jay Lan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chandra Seetharaman
     
  • Unlike earlier iterations of the delay accounting patches, now delays are only
    collected for the actual I/O waits rather than try and cover the delays seen
    in I/O submission paths.

    Account separately for block I/O delays incurred as a result of swapin page
    faults whose frequency can be affected by the task/process' rss limit. Hence
    swapin delays can act as feedback for rss limit changes independent of I/O
    priority changes.

    Signed-off-by: Shailabh Nagar
    Signed-off-by: Balbir Singh
    Cc: Jes Sorensen
    Cc: Peter Chubb
    Cc: Erich Focht
    Cc: Levent Serinol
    Cc: Jay Lan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • Initialization code related to collection of per-task "delay" statistics which
    measure how long it had to wait for cpu, sync block io, swapping etc. The
    collection of statistics and the interface are in other patches. This patch
    sets up the data structures and allows the statistics collection to be
    disabled through a kernel boot parameter.

    Signed-off-by: Shailabh Nagar
    Signed-off-by: Balbir Singh
    Cc: Jes Sorensen
    Cc: Peter Chubb
    Cc: Erich Focht
    Cc: Levent Serinol
    Cc: Jay Lan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shailabh Nagar
     
  • On platforms that have __ARCH_WANT_UNLOCKED_CTXSW set and want to implement
    lock validator support there's a bug in rq->lock handling: in this case we
    dont 'carry over' the runqueue lock into another task - but still we did a
    spinlock_release() of it. Fix this by making the spinlock_release() in
    context_switch() dependent on !__ARCH_WANT_UNLOCKED_CTXSW.

    (Reported by Ralf Baechle on MIPS, which has __ARCH_WANT_UNLOCKED_CTXSW.
    This fixes a lockdep-internal BUG message on such platforms.)

    Signed-off-by: Ingo Molnar
    Cc: Ralf Baechle
    Cc: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • IRQs must be disabled before taking ->siglock.

    Noticed by lockdep.

    Signed-off-by: OGAWA Hirofumi
    Cc: Arjan van de Ven
    Cc: Ingo Molnar
    Cc: "Eric W. Biederman"
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    OGAWA Hirofumi
     
  • Resolve problems seen w/ APM suspend.

    Due to resume initialization ordering, its possible we could get a timer
    interrupt before the timekeeping resume() function is called. This patch
    ensures we don't do any timekeeping accounting before we're fully resumed.

    (akpm: fixes the machine-freezes-on-APM-resume bug)

    Signed-off-by: John Stultz
    Cc: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    john stultz
     
  • Christoph Hellwig:
    open_softirq just enables a softirq. The softirq array is statically
    allocated so to add a new one you would have to patch the kernel. So
    there's no point to keep this export at all as any user would have to
    patch the enum in include/linux/interrupt.h anyway.

    Signed-off-by: Adrian Bunk
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • When CONFIG_RT_MUTEX_TESTER is enabled kernel refuses to suspend the
    machine because it's unable to freeze the rt-test-* threads.

    Add try_to_freeze() after schedule() so that the threads will be freezed
    correctly; I've tested the patch and it lets the notebook suspends and
    resumes nicely.

    Signed-off-by: Luca Tettamanti
    Cc: Ingo Molnar
    Acked-by: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Luca Tettamanti
     
  • Relax the CPU in the del_timer_sync() busywait loop.

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Remove the now-unneeded kthread_stop_sem().

    Signed-off-by: Adrian Bunk
    Acked-by: Alan Stern
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • Got a customer bug report (https://bugzilla.novell.com/190296) about kernel
    symbols longer than 127 characters which end up in a string buffer that is
    not NULL terminated, leading to garbage in /proc/kallsyms. Using strlcpy
    prevents this from happening, even though such symbols still won't come out
    right.

    A better fix would be to not use a fixed-size buffer, but it's probably not
    worth the trouble. (Modversion'ed symbols even have a length limit of 60.)

    [bunk@stusta.de: build fix]
    Signed-off-by: Andreas Gruenbacher
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andreas Gruenbacher
     

13 Jul, 2006

3 commits

  • Implement the scheduled unexport of insert_resource.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • Remove the deprecated and no longer used pm_unregister_all().

    Signed-off-by: Adrian Bunk
    Acked-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • Based on a patch from Ernie Petrides

    During security research, Red Hat discovered a behavioral flaw in core
    dump handling. A local user could create a program that would cause a
    core file to be dumped into a directory they would not normally have
    permissions to write to. This could lead to a denial of service (disk
    consumption), or allow the local user to gain root privileges.

    The prctl() system call should never allow to set "dumpable" to the
    value 2. Especially not for non-privileged users.

    This can be split into three cases:

    1) running as root -- then core dumps will already be done as root,
    and so prctl(PR_SET_DUMPABLE, 2) is not useful

    2) running as non-root w/setuid-to-root -- this is the debatable case

    3) running as non-root w/setuid-to-non-root -- then you definitely
    do NOT want "dumpable" to get set to 2 because you have the
    privilege escalation vulnerability

    With case #2, the only potential usefulness is for a program that has
    designed to run with higher privilege (than the user invoking it) that
    wants to be able to create root-owned root-validated core dumps. This
    might be useful as a debugging aid, but would only be safe if the program
    had done a chdir() to a safe directory.

    There is no benefit to a production setuid-to-root utility, because it
    shouldn't be dumping core in the first place. If this is true, then the
    same debugging aid could also be accomplished with the "suid_dumpable"
    sysctl.

    Signed-off-by: Marcel Holtmann
    Signed-off-by: Linus Torvalds

    Marcel Holtmann
     

11 Jul, 2006

2 commits

  • Disable lockdep debugging in two situations where the integrity of the
    kernel no longer is guaranteed: when oopsing and when hitting a
    tainting-condition. The goal is to not get weird lockdep traces that don't
    make sense or are otherwise undebuggable, to not waste time.

    Lockdep assumes that the previous state it knows about is valid to operate,
    which is why lockdep turns itself off after the first violation it reports,
    after that point it can no longer make that assumption.

    A kernel oops means that the integrity of the kernel compromised; in
    addition anything lockdep would report is of lesser importance than the
    oops.

    All the tainting conditions are of similar integrity-violating nature and
    also make debugging/diagnosing more difficult.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     
  • As announced half a year ago this patch will remove the tasklist_lock
    export. The previous two patches got rid of the remaining modular users.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig