Greetings, I got the below dmesg and the first bad commit is commit 97e890b9c839c191a500c3a19bfb4539f65c70be Author: Ming Lei AuthorDate: Fri Jan 10 12:41:46 2014 +1100 Commit: Stephen Rothwell CommitDate: Fri Jan 10 12:41:46 2014 +1100 lib/percpu_counter.c: disable local irq when updating percpu couter __percpu_counter_add() may be called in softirq/hardirq handler (such as, blk_mq_queue_exit() is typically called in hardirq/softirq handler), so we need to disable local irq when updating the percpu counter, otherwise counts may be lost. The patch fixes problem that 'rmmod null_blk' may hang in blk_cleanup_queue() because of miscounting of request_queue->mq_usage_counter. Signed-off-by: Ming Lei Cc: Paul Gortmaker Cc: Andrew Morton Cc: Shaohua Li Cc: Jens Axboe Cc: Fan Du Cc: Tejun Heo Cc: Signed-off-by: Andrew Morton +-----------------------------------------------------------+----+ | | | +-----------------------------------------------------------+----+ | boot_successes | 0 | | boot_failures | 19 | | WARNING:CPU:PID:at_kernel/locking/lockdep.c:check_flags() | 19 | +-----------------------------------------------------------+----+ [ 8.021637] Freeing unused kernel memory: 816K (ffff880001934000 - ffff880001a00000) [ 8.093354] ------------[ cut here ]------------ [ 8.095469] WARNING: CPU: 1 PID: 1 at kernel/locking/lockdep.c:3537 check_flags+0x77/0x1ba() [ 8.095469] DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled) [ 8.095469] CPU: 1 PID: 1 Comm: init Not tainted 3.13.0-rc7-next-20140110-08732-g1955a14 #1 [ 8.095469] 0000000000000000 ffff880000077c30 ffffffff8156f277 ffff880000077c78 [ 8.095469] ffff880000077c68 ffffffff81091f0b ffffffff810c6bb2 0000000000000046 [ 8.095469] ffffffff824d27d8 ffff88000e6b8000 0000000000000246 ffff880000077cc8 [ 8.095469] Call Trace: [ 8.095469] [] dump_stack+0x4d/0x66 [ 8.095469] [] warn_slowpath_common+0x70/0x89 [ 8.095469] [] ? check_flags+0x77/0x1ba [ 8.095469] [] warn_slowpath_fmt+0x47/0x49 [ 8.095469] [] check_flags+0x77/0x1ba [ 8.095469] [] lock_acquire+0x50/0xc4 [ 8.095469] [] _raw_spin_lock+0x32/0x3f [ 8.095469] [] ? __percpu_counter_add+0x45/0x73 [ 8.095469] [] __percpu_counter_add+0x45/0x73 [ 8.095469] [] __vm_enough_memory+0x24/0x12f [ 8.095469] [] cap_vm_enough_memory+0x47/0x4c [ 8.095469] [] security_vm_enough_memory_mm+0xe/0x10 [ 8.095469] [] copy_process+0xb67/0x151d [ 8.095469] [] do_fork+0x87/0x244 [ 8.095469] [] ? context_tracking_user_exit+0x65/0x84 [ 8.095469] [] SyS_clone+0x11/0x13 [ 8.095469] [] stub_clone+0x69/0x90 [ 8.095469] [] ? tracesys+0xd4/0xd9 [ 8.095469] ---[ end trace 23660513ccff1a6d ]--- [ 8.095469] possible reason: unannotated irqs-off. git bisect start 1955a14a5ba6e3c3b11117812d11dc550ccc37ae 7ddcdb2ccdcae0838a39b1bf7b0773c5540da847 -- git bisect bad 83548563c157403ba219b5bd9c59141f11377182 # 20:00 0- 2 Merge branch 'akpm-current/current' git bisect good 8b0f1c99ffb8d8af0ab66d7a115fe0873225ef45 # 20:24 20+ 0 ocfs2: return EINVAL if the given range to discard is less than block size git bisect good 201959135faa132bf817cce415cb864d80a822ff # 20:47 20+ 0 swap: add a simple detector for inappropriate swapin readahead git bisect bad d4c0399994314ca03ce1313c4952aa385b9355aa # 20:55 0- 6 drivers/rtc/rtc-mxc.c: remove unneeded label git bisect good 4e0af6dd2777122c510b4fe92e306d94c4264375 # 21:07 20+ 0 backlight: omap1: use devm_backlight_device_register() git bisect bad 71c3c0b0f0649c71fa4ee8dd3333b7351fc76707 # 21:15 0- 2 checkpatch: warn only on "space before semicolon" at end of line git bisect good 383f1e84a52533a6d198e8a6f3e79ff5b433269a # 21:30 20+ 0 lib/kstrtox.c: remove redundant cleanup git bisect good 55cbfd15fd125aad68b9a958749ae2d3c192db9c # 21:38 20+ 0 lib/assoc_array.c: remove global variable git bisect bad 299de867cbaf576ee0aa08d3c38339dcaa70d4d1 # 21:42 0- 3 firmware/dmi_scan: generalize for use by other archs git bisect bad 7cd7feb13f684d5ff9219e5117e359e898ecad97 # 21:46 0- 1 lib: Add CRC64 ECMA module git bisect bad 97e890b9c839c191a500c3a19bfb4539f65c70be # 21:47 0- 3 lib/percpu_counter.c: disable local irq when updating percpu couter # first bad commit: [97e890b9c839c191a500c3a19bfb4539f65c70be] lib/percpu_counter.c: disable local irq when updating percpu couter git bisect good 55cbfd15fd125aad68b9a958749ae2d3c192db9c # 21:54 60+ 0 lib/assoc_array.c: remove global variable git bisect bad 1955a14a5ba6e3c3b11117812d11dc550ccc37ae # 21:54 0- 19 Add linux-next specific files for 20140110 git bisect good 005d44e813048aae0ae683f5902ca823b616d002 # 22:09 60+ 0 Revert "lib/percpu_counter.c: disable local irq when updating percpu couter" git bisect good 228fdc083b017eaf90e578fa86fb1ecfd5ffae87 # 22:26 60+ 0 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net git bisect bad 1955a14a5ba6e3c3b11117812d11dc550ccc37ae # 22:26 0- 19 Add linux-next specific files for 20140110 Thanks, Fengguang