syzbot


possible deadlock in local_lock_acquire

Status: upstream: reported C repro on 2024/03/28 16:11
Bug presence: origin:upstream
[Documentation on labels]
Reported-by: syzbot+05dc59184abf0cf80ebd@syzkaller.appspotmail.com
First crash: 39d, last: 18d
Bug presence (1)
Date Name Commit Repro Result
2024/04/25 upstream (ToT) a93289b830ce C [report] possible deadlock in __mmap_lock_do_trace_acquire_returned

Sample crash report:
============================================
WARNING: possible recursive locking detected
5.15.153-syzkaller #0 Not tainted
--------------------------------------------
syz-executor575/3500 is trying to acquire lock:
ffff8880b9b35bb8 (lock#8){+.+.}-{2:2}, at: local_lock_acquire+0xd/0x170 include/linux/local_lock_internal.h:28

but task is already holding lock:
ffff8880b9b35bb8 (lock#8){+.+.}-{2:2}, at: local_lock_acquire+0xd/0x170 include/linux/local_lock_internal.h:28

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(lock#8);
  lock(lock#8);

 *** DEADLOCK ***

 May be due to missing lock nesting notation

5 locks held by syz-executor575/3500:
 #0: ffff88807ad57128 (&mm->mmap_lock){++++}-{3:3}, at: mmap_read_trylock include/linux/mmap_lock.h:136 [inline]
 #0: ffff88807ad57128 (&mm->mmap_lock){++++}-{3:3}, at: do_user_addr_fault arch/x86/mm/fault.c:1329 [inline]
 #0: ffff88807ad57128 (&mm->mmap_lock){++++}-{3:3}, at: handle_page_fault arch/x86/mm/fault.c:1476 [inline]
 #0: ffff88807ad57128 (&mm->mmap_lock){++++}-{3:3}, at: exc_page_fault+0x181/0x740 arch/x86/mm/fault.c:1532
 #1: ffff8880b9b35bb8 (lock#8){+.+.}-{2:2}, at: local_lock_acquire+0xd/0x170 include/linux/local_lock_internal.h:28
 #2: ffffffff8c91f720 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:311
 #3: ffffffff8c91f720 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:311
 #4: ffff88807ad57128 (&mm->mmap_lock){++++}-{3:3}, at: mmap_read_trylock include/linux/mmap_lock.h:136 [inline]
 #4: ffff88807ad57128 (&mm->mmap_lock){++++}-{3:3}, at: stack_map_get_build_id_offset+0x23e/0x930 kernel/bpf/stackmap.c:185

stack backtrace:
CPU: 1 PID: 3500 Comm: syz-executor575 Not tainted 5.15.153-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106
 print_deadlock_bug kernel/locking/lockdep.c:2946 [inline]
 check_deadlock kernel/locking/lockdep.c:2989 [inline]
 validate_chain+0x46d2/0x5930 kernel/locking/lockdep.c:3775
 __lock_acquire+0x1295/0x1ff0 kernel/locking/lockdep.c:5012
 lock_acquire+0x1db/0x4f0 kernel/locking/lockdep.c:5623
 local_lock_acquire+0x29/0x170 include/linux/local_lock_internal.h:29
 __mmap_lock_do_trace_acquire_returned+0x7c/0x340 mm/mmap_lock.c:237
 __mmap_lock_trace_acquire_returned include/linux/mmap_lock.h:36 [inline]
 mmap_read_trylock include/linux/mmap_lock.h:137 [inline]
 stack_map_get_build_id_offset+0x612/0x930 kernel/bpf/stackmap.c:185
 __bpf_get_stack+0x495/0x570 kernel/bpf/stackmap.c:496
 ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1490 [inline]
 bpf_get_stack_raw_tp+0x1b2/0x220 kernel/trace/bpf_trace.c:1480
 bpf_prog_e6cf5f9c69743609+0x3a/0x248
 bpf_dispatcher_nop_func include/linux/bpf.h:785 [inline]
 __bpf_prog_run include/linux/filter.h:628 [inline]
 bpf_prog_run include/linux/filter.h:635 [inline]
 __bpf_trace_run kernel/trace/bpf_trace.c:1880 [inline]
 bpf_trace_run4+0x1ea/0x390 kernel/trace/bpf_trace.c:1919
 trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:44 [inline]
 __mmap_lock_do_trace_acquire_returned+0x2d6/0x340 mm/mmap_lock.c:237
 __mmap_lock_trace_acquire_returned include/linux/mmap_lock.h:36 [inline]
 mmap_read_trylock include/linux/mmap_lock.h:137 [inline]
 do_user_addr_fault arch/x86/mm/fault.c:1329 [inline]
 handle_page_fault arch/x86/mm/fault.c:1476 [inline]
 exc_page_fault+0x59c/0x740 arch/x86/mm/fault.c:1532
 asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:568
RIP: 0033:0x7fbc37cef0d0
Code: 41 54 55 48 89 f5 53 89 fb 48 83 ec 18 48 83 3d 1d 0f 0a 00 00 89 54 24 0c 74 08 84 c9 0f 85 09 02 00 00 31 c0 ba 01 00 00 00 <f0> 0f b1 15 10 3c 0a 00 0f 85 0f 02 00 00 4c 8d 25 03 3c 0a 00 4c
RSP: 002b:00007ffcecf04eb0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000001
RDX: 0000000000000001 RSI: 00007fbc37d90118 RDI: 0000000000000000
RBP: 00007fbc37d90118 R08: 0000000000000006 R09: 0000000000000006
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000001 R15: 0000000000000001
 </TASK>
------------[ cut here ]------------
WARNING: CPU: 1 PID: 3500 at kernel/trace/bpf_trace.c:1411 ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1483 [inline]
WARNING: CPU: 1 PID: 3500 at kernel/trace/bpf_trace.c:1411 bpf_get_stack_raw_tp+0x1d3/0x220 kernel/trace/bpf_trace.c:1480
Modules linked in:
CPU: 1 PID: 3500 Comm: syz-executor575 Not tainted 5.15.153-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
RIP: 0010:get_bpf_raw_tp_regs kernel/trace/bpf_trace.c:1411 [inline]
RIP: 0010:____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1483 [inline]
RIP: 0010:bpf_get_stack_raw_tp+0x1d3/0x220 kernel/trace/bpf_trace.c:1480
Code: f1 45 31 c0 e8 4e 89 14 00 65 ff 0d 1f 09 79 7e 4c 63 e8 4c 89 e8 48 83 c4 18 5b 41 5c 41 5d 41 5e 41 5f 5d c3 e8 8d 05 f6 ff <0f> 0b 65 ff 0d fc 08 79 7e 49 c7 c5 f0 ff ff ff eb d7 e8 76 05 f6
RSP: 0000:ffffc90002cf7270 EFLAGS: 00010293
RAX: ffffffff818a3423 RBX: 0000000000000003 RCX: ffff88802174d940
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00000000fffffffc
RBP: ffffc90002cf72b0 R08: ffffffff818a32e3 R09: fffffbfff1bc72a6
R10: 0000000000000000 R11: dffffc0000000001 R12: ffffc90002cf72c8
R13: 0000000000000000 R14: 0000000000000902 R15: ffff8880b9b33b30
FS:  00005555555d1380(0000) GS:ffff8880b9b00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fbc37d92ce8 CR3: 0000000079b6c000 CR4: 00000000003506e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 bpf_prog_e6cf5f9c69743609+0x3a/0x248
 bpf_dispatcher_nop_func include/linux/bpf.h:785 [inline]
 __bpf_prog_run include/linux/filter.h:628 [inline]
 bpf_prog_run include/linux/filter.h:635 [inline]
 __bpf_trace_run kernel/trace/bpf_trace.c:1880 [inline]
 bpf_trace_run4+0x1ea/0x390 kernel/trace/bpf_trace.c:1919
 trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:44 [inline]
 __mmap_lock_do_trace_acquire_returned+0x2d6/0x340 mm/mmap_lock.c:237
 __mmap_lock_trace_acquire_returned include/linux/mmap_lock.h:36 [inline]
 mmap_read_trylock include/linux/mmap_lock.h:137 [inline]
 stack_map_get_build_id_offset+0x612/0x930 kernel/bpf/stackmap.c:185
 __bpf_get_stack+0x495/0x570 kernel/bpf/stackmap.c:496
 ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1490 [inline]
 bpf_get_stack_raw_tp+0x1b2/0x220 kernel/trace/bpf_trace.c:1480
 bpf_prog_e6cf5f9c69743609+0x3a/0x248
 bpf_dispatcher_nop_func include/linux/bpf.h:785 [inline]
 __bpf_prog_run include/linux/filter.h:628 [inline]
 bpf_prog_run include/linux/filter.h:635 [inline]
 __bpf_trace_run kernel/trace/bpf_trace.c:1880 [inline]
 bpf_trace_run4+0x1ea/0x390 kernel/trace/bpf_trace.c:1919
 trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:44 [inline]
 __mmap_lock_do_trace_acquire_returned+0x2d6/0x340 mm/mmap_lock.c:237
 __mmap_lock_trace_acquire_returned include/linux/mmap_lock.h:36 [inline]
 mmap_read_trylock include/linux/mmap_lock.h:137 [inline]
 stack_map_get_build_id_offset+0x612/0x930 kernel/bpf/stackmap.c:185
 __bpf_get_stack+0x495/0x570 kernel/bpf/stackmap.c:496
 ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1490 [inline]
 bpf_get_stack_raw_tp+0x1b2/0x220 kernel/trace/bpf_trace.c:1480
 bpf_prog_e6cf5f9c69743609+0x3a/0x248
 bpf_dispatcher_nop_func include/linux/bpf.h:785 [inline]
 __bpf_prog_run include/linux/filter.h:628 [inline]
 bpf_prog_run include/linux/filter.h:635 [inline]
 __bpf_trace_run kernel/trace/bpf_trace.c:1880 [inline]
 bpf_trace_run4+0x1ea/0x390 kernel/trace/bpf_trace.c:1919
 trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:44 [inline]
 __mmap_lock_do_trace_acquire_returned+0x2d6/0x340 mm/mmap_lock.c:237
 __mmap_lock_trace_acquire_returned include/linux/mmap_lock.h:36 [inline]
 mmap_read_trylock include/linux/mmap_lock.h:137 [inline]
 stack_map_get_build_id_offset+0x612/0x930 kernel/bpf/stackmap.c:185
 __bpf_get_stack+0x495/0x570 kernel/bpf/stackmap.c:496
 ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1490 [inline]
 bpf_get_stack_raw_tp+0x1b2/0x220 kernel/trace/bpf_trace.c:1480
 bpf_prog_e6cf5f9c69743609+0x3a/0x248
 bpf_dispatcher_nop_func include/linux/bpf.h:785 [inline]
 __bpf_prog_run include/linux/filter.h:628 [inline]
 bpf_prog_run include/linux/filter.h:635 [inline]
 __bpf_trace_run kernel/trace/bpf_trace.c:1880 [inline]
 bpf_trace_run4+0x1ea/0x390 kernel/trace/bpf_trace.c:1919
 trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:44 [inline]
 __mmap_lock_do_trace_acquire_returned+0x2d6/0x340 mm/mmap_lock.c:237
 __mmap_lock_trace_acquire_returned include/linux/mmap_lock.h:36 [inline]
 mmap_read_trylock include/linux/mmap_lock.h:137 [inline]
 do_user_addr_fault arch/x86/mm/fault.c:1329 [inline]
 handle_page_fault arch/x86/mm/fault.c:1476 [inline]
 exc_page_fault+0x59c/0x740 arch/x86/mm/fault.c:1532
 asm_exc_page_fault+0x22/0x30 arch/x86/include/asm/idtentry.h:568
RIP: 0033:0x7fbc37cef0d0
Code: 41 54 55 48 89 f5 53 89 fb 48 83 ec 18 48 83 3d 1d 0f 0a 00 00 89 54 24 0c 74 08 84 c9 0f 85 09 02 00 00 31 c0 ba 01 00 00 00 <f0> 0f b1 15 10 3c 0a 00 0f 85 0f 02 00 00 4c 8d 25 03 3c 0a 00 4c
RSP: 002b:00007ffcecf04eb0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000001
RDX: 0000000000000001 RSI: 00007fbc37d90118 RDI: 0000000000000000
RBP: 00007fbc37d90118 R08: 0000000000000006 R09: 0000000000000006
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000001 R15: 0000000000000001
 </TASK>

Crashes (3):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/03/28 16:10 linux-5.15.y 9465fef4ae35 e91187ee .config console log report syz C [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan-perf possible deadlock in local_lock_acquire
2024/04/18 11:07 linux-5.15.y c52b9710c83d af24b050 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan possible deadlock in local_lock_acquire
2024/04/12 22:42 linux-5.15.y cdfd0a7f0139 c8349e48 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-5-15-kasan-perf possible deadlock in local_lock_acquire
* Struck through repros no longer work on HEAD.