bug report, DEBUG_LOCKS_WARN_ON at kernel/locking/lockdep.c:3646 check_flags

From: ZhangXiao
Date: Mon May 23 2016 - 23:23:07 EST


Hi Experts,

With ARM , versatile-pb When I enable PROVE_LOCKING, DEBUG_LOCKDEP and
KPROBES_SANITY_TEST, there will be a call trace like below:

Kprobe smoke test: started
------------[ cut here ]------------
WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:3646
check_flags+0xdc/0x200
DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)
Modules linked in:
CPU: 0 PID: 1 Comm: swapper Not tainted 4.6.0-WR8.0.0.0_standard+ #45
Hardware name: ARM-Versatile (Device Tree Support)
[<c0018478>] (unwind_backtrace) from [<c001470c>] (show_stack+0x20/0x24)
[<c001470c>] (show_stack) from [<c03dafd8>] (dump_stack+0x20/0x28)
[<c03dafd8>] (dump_stack) from [<c0022b9c>] (__warn+0xe0/0x10c)
[<c0022b9c>] (__warn) from [<c0022c10>] (warn_slowpath_fmt+0x48/0x50)
[<c0022c10>] (warn_slowpath_fmt) from [<c0060a80>] (check_flags+0xdc/0x200)
[<c0060a80>] (check_flags) from [<c0061390>] (lock_acquire+0x50/0x258)
[<c0061390>] (lock_acquire) from [<c06fa9bc>] (mutex_lock_nested+0x60/0x3a8)
[<c06fa9bc>] (mutex_lock_nested) from [<c00adfa8>]
(unregister_jprobes.part.5+0x2c/0x94)
[<c00adfa8>] (unregister_jprobes.part.5) from [<c00ae060>]
(unregister_jprobe+0x2c/0x34)
[<c00ae060>] (unregister_jprobe) from [<c00ac894>]
(init_test_probes+0x240/0x51c)
[<c00ac894>] (init_test_probes) from [<c098eb6c>] (init_kprobes+0x15c/0x19c)
[<c098eb6c>] (init_kprobes) from [<c0009d54>] (do_one_initcall+0x114/0x1d8)
[<c0009d54>] (do_one_initcall) from [<c0981f20>]
(kernel_init_freeable+0x1fc/0x2cc)
[<c0981f20>] (kernel_init_freeable) from [<c06f823c>]
(kernel_init+0x18/0x104)
[<c06f823c>] (kernel_init) from [<c000fc8c>] (ret_from_fork+0x14/0x28)
---[ end trace e251ef8fa7e2aa1e ]---
possible reason: unannotated irqs-on.
irq event stamp: 274608
hardirqs last enabled at (274607): [<c06fc940>]
__mutex_unlock_slowpath+0x158/0x1b0
hardirqs last disabled at (274608): [<c06ff2c4>] __und_svc+0x44/0x58
softirqs last enabled at (274584): [<c0009968>] __do_softirq+0x3e0/0x550
softirqs last disabled at (274551): [<c0027508>] irq_exit+0x94/0xd8
Kprobe smoke test: passed successfully


Thanks
Xiao