Greetings, I got the below dmesg and the first bad commit is commit f5947173c082a04a9804bb42a91a0f5df5ee0527 Author: Tejun Heo Date: Wed Feb 20 02:05:52 2013 +0000 idr: implement lookup hint While idr lookup isn't a particularly heavy operation, it still is too substantial to use in hot paths without worrying about the performance implications. With recent changes, each idr_layer covers 256 slots which should be enough to cover most use cases with single idr_layer making lookup hint very attractive. This patch adds idr->hint which points to the idr_layer which allocated an ID most recently and the fast path lookup becomes if (look up target's prefix matches that of the hinted layer) return hint->ary[ID's offset in the leaf layer]; which can be inlined. idr->hint is set to the leaf node on idr_fill_slot() and cleared from free_layer(). Signed-off-by: Tejun Heo Signed-off-by: Andrew Morton [ 1.785897] remote IPI: ok | [ 1.786928] local IPI: [ 3.681214] BUG: unable to handle kernel NULL pointer dereference at (null) [ 3.683277] IP: [] perf_init_event+0x43/0xf7 [ 3.684000] PGD 0 [ 3.684000] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC [ 3.684000] Modules linked in: [ 3.684000] CPU 0 [ 3.684000] Pid: 11, comm: watchdog/0 Not tainted 3.8.0-mm1-00712-ge5b1dc6 #164 Bochs Bochs [ 3.684000] RIP: 0010:[] [] perf_init_event+0x43/0xf7 [ 3.684000] RSP: 0000:ffff88001d6e3cc8 EFLAGS: 00000246 [ 3.684000] RAX: 0000000000000000 RBX: ffffffff83c60370 RCX: 0000000000436017 [ 3.684000] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000246 [ 3.684000] RBP: ffff88001d6e3cf8 R08: 0000000000000001 R09: 0000000000000000 [ 3.684000] R10: ffffffff83c51bf0 R11: ffff88001e20a000 R12: ffff88001d6d2800 [ 3.684000] R13: 0000000000000000 R14: ffff88001d6d2800 R15: ffffffff83c51270 [ 3.684000] FS: 0000000000000000(0000) GS:ffff88001e200000(0000) knlGS:0000000000000000 [ 3.684000] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 3.684000] CR2: 0000000000000000 CR3: 0000000003c15000 CR4: 00000000000006f0 [ 3.684000] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 3.684000] DR3: 0000000000000000 DR6: 0000000000000000 DR7: 0000000000000000 [ 3.684000] Process watchdog/0 (pid: 11, threadinfo ffff88001d6e2000, task ffff88001d6e42c0) [ 3.684000] Stack: [ 3.684000] ffff88001d6e3cf8 ffffffff810bc566 ffff88001d6d2bc8 ffffffff83c60370 [ 3.684000] 0000000000000000 0000000000000000 ffff88001d6e3d48 ffffffff81141da7 [ 3.684000] ffffffff8110dc69 000000001e3d5700 ffff88001d6e3d28 0000000000000000 [ 3.684000] Call Trace: [ 3.684000] [] ? __mutex_init+0x57/0x5f [ 3.684000] [] perf_event_alloc+0x267/0x397 [ 3.684000] [] ? touch_nmi_watchdog+0x5f/0x5f [ 3.684000] [] perf_event_create_kernel_counter+0x26/0xce [ 3.684000] [] watchdog_enable+0xaf/0x1a4 [ 3.684000] [] ? __schedule+0x5a5/0x5ee [ 3.684000] [] smpboot_thread_fn+0x135/0x1b4 [ 3.684000] [] ? smpboot_register_percpu_thread+0xb7/0xb7 [ 3.684000] [] ? smpboot_register_percpu_thread+0xb7/0xb7 [ 3.684000] [] kthread+0xb1/0xb9 [ 3.684000] [] ? __wait_for_common+0xb8/0x107 [ 3.684000] [] ? __kthread_parkme+0x65/0x65 [ 3.684000] [] ret_from_fork+0x7c/0xb0 [ 3.684000] [] ? __kthread_parkme+0x65/0x65 [ 3.684000] Code: eb c5 f7 ff 48 c7 c7 50 cc d0 84 41 89 c5 e8 c6 9d ff ff e8 ea 9d ff ff 41 8b b4 24 a0 00 00 00 48 8b 05 b8 af bc 03 89 f2 30 d2 <3b> 10 75 0f 40 0f b6 f6 48 83 c6 04 48 8b 5c f0 08 eb 0f 48 c7 [ 3.684000] RIP [] perf_init_event+0x43/0xf7 [ 3.684000] RSP [ 3.684000] CR2: 0000000000000000 [ 3.688499] ---[ end trace 06ac4849e4c65ddd ]--- git bisect start e5b1dc669978ba463dd249dab23eef98b12c0b05 cafc49b041ba642a05e4b228f892282033c97f9b -- git bisect good 597219aec6c138b9c78c764b63c94ccfe191dbc9 # 22 2013-02-20 16:32:26 hfsplus: rework functionality of getting, setting and deleting of extended attributes git bisect bad 04cf02b90d290691a5e10d17676300b6cb5ab29f # 0 2013-02-20 16:42:51 ipmi: remove superfluous kernel/userspace explanation git bisect good 08833a200e79cc3b8b9193df4daf037f5155539a # 20 2013-02-20 17:09:56 firewire: convert to idr_alloc() git bisect good 740bd30ffc9f03f4c58d784e08a54159ae0f60aa # 22 2013-02-20 17:41:46 ppp: convert to idr_alloc() git bisect good eb29f6e97e62b450609ce301113c1749062769c6 # 22 2013-02-20 18:13:15 ipc-convert-to-idr_alloc-fix git bisect good 653cc8e56dfc804e1e8a3dbeff24a3d20aa9d41e # 24 2013-02-20 18:45:17 idr: fix top layer handling git bisect good 5c95ffae5c6cc2242e1f65d0164e0223574653bc # 20 2013-02-20 19:21:46 idr: make idr_layer larger git bisect bad f5947173c082a04a9804bb42a91a0f5df5ee0527 # 0 2013-02-20 19:32:22 idr: implement lookup hint git bisect good 7fdabbedd65764b9876f1fefa43609f5ec48c023 # 21 2013-02-20 20:00:41 idr: add idr_layer->prefix git bisect good 7fdabbedd65764b9876f1fefa43609f5ec48c023 # 61 2013-02-20 21:13:41 idr: add idr_layer->prefix git bisect bad e5b1dc669978ba463dd249dab23eef98b12c0b05 # 0 2013-02-20 21:24:07 add a refcount check in dput() git bisect bad e462f39a9cf3efd63c7bf15d633470bb90966485 # 0 2013-02-20 21:28:11 Revert "add a refcount check in dput()" git bisect bad 28df63a83ff0a216902f6c8f90afb0b1f0fa8373 # 0 2013-02-20 21:49:08 Add linux-next specific files for 20130220 Thanks, Fengguang