commit d8c89eb3a12f0da96d049bd515c7fa3702e511c5 Merge: 456ef15... fb1dac9... Author: Linus Torvalds Date: Wed Jan 16 09:55:49 2008 -0800 Merge branch 'v2.6.24-rc7-lockdep' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep * 'v2.6.24-rc7-lockdep' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep: lockdep: more hardirq annotations for notify_die() lockdep: fix workqueue creation API lockdep interaction lockdep: fix internal double unlock during self-test commit 456ef1553cb2b06729d64c1d1f0f2bda34e9b201 Author: Tejun Heo Date: Wed Jan 16 12:10:53 2008 +0900 sysfs: fix bugs in sysfs_rename/move_dir() sysfs_rename/move_dir() have the following bugs. - On dentry lookup failure, kfree() is called on ERR_PTR() value. - sysfs_move_dir() has an extra dput() on success path. Fix them. Signed-off-by: Tejun Heo Signed-off-by: Linus Torvalds commit e49452c67703d3647467d65275fb893589384fed Author: Tejun Heo Date: Wed Jan 16 12:06:14 2008 +0900 sysfs: make sysfs_lookup() return ERR_PTR(-ENOENT) on failed lookup sysfs tries to keep dcache a strict subset of sysfs_dirent tree by shooting down dentries when a node is removed, that is, no negative dentry for sysfs. However, the lookup function returned NULL and thus created negative dentries when the target node didn't exist. Make sysfs_lookup() return ERR_PTR(-ENOENT) on lookup failure. This fixes the NULL dereference bug in sysfs_get_dentry() discovered by bluetooth rfcomm device moving around. Signed-off-by: Tejun Heo Signed-off-by: Linus Torvalds commit fb1dac909d94ff807cd833d340c6827c3a957159 Author: Peter Zijlstra Date: Wed Jan 16 09:51:59 2008 +0100 lockdep: more hardirq annotations for notify_die() On Sat, 2007-12-29 at 18:06 +0100, Marcin Slusarz wrote: > Hi > Today I've got this (while i was upgrading my gentoo box): > > WARNING: at kernel/lockdep.c:2658 check_flags() > Pid: 21680, comm: conftest Not tainted 2.6.24-rc6 #63 > > Call Trace: > [] check_flags+0x1c7/0x1d0 > [] lock_acquire+0x57/0xc0 > [] __atomic_notifier_call_chain+0x60/0xd0 > [] atomic_notifier_call_chain+0x11/0x20 > [] notify_die+0x2e/0x30 > [] do_divide_error+0x5a/0xa0 > [] trace_hardirqs_on_thunk+0x35/0x3a > [] trace_hardirqs_on+0xd9/0x180 > [] trace_hardirqs_on_thunk+0x35/0x3a > [] error_exit+0x0/0xa9 > > possible reason: unannotated irqs-off. > irq event stamp: 4693 > hardirqs last enabled at (4693): [] trace_hardirqs_on_thunk+0x35/0x3a > hardirqs last disabled at (4692): [] trace_hardirqs_off_thunk+0x35/0x37 > softirqs last enabled at (3546): [] __do_softirq+0xb3/0xd0 > softirqs last disabled at (3521): [] call_softirq+0x1c/0x30 more early fixups for notify_die().. Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit eb13ba873881abd5e15af784756a61af635e665e Author: Johannes Berg Date: Wed Jan 16 09:51:58 2008 +0100 lockdep: fix workqueue creation API lockdep interaction Dave Young reported warnings from lockdep that the workqueue API can sometimes try to register lockdep classes with the same key but different names. This is not permitted in lockdep. Unfortunately, I was unaware of that restriction when I wrote the code to debug workqueue problems with lockdep and used the workqueue name as the lockdep class name. This can obviously lead to the problem if the workqueue name is dynamic. This patch solves the problem by always using a constant name for the workqueue's lockdep class, namely either the constant name that was passed in or a string consisting of the variable name. Signed-off-by: Johannes Berg Signed-off-by: Ingo Molnar Signed-off-by: Peter Zijlstra commit 5a26db5bd25cf4bf32ae9fa9f6136b6b6d5b45c5 Author: Nick Piggin Date: Wed Jan 16 09:51:58 2008 +0100 lockdep: fix internal double unlock during self-test Lockdep, during self-test (when it was simulating double unlocks) was sometimes unconditionally unlocking a spinlock when it had not been locked. This won't work for ticket locks. Signed-off-by: Nick Piggin Signed-off-by: Ingo Molnar Signed-off-by: Peter Zijlstra