All of lore.kernel.org
 help / color / mirror / Atom feed
From: syzbot <syzbot+40905bca570ae6784745@syzkaller.appspotmail.com>
To: akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
	 linux-mm@kvack.org, netdev@vger.kernel.org,
	syzkaller-bugs@googlegroups.com
Subject: [syzbot] [mm?] inconsistent lock state in valid_state (3)
Date: Fri, 14 Jun 2024 06:49:18 -0700	[thread overview]
Message-ID: <000000000000c27da9061ad9e101@google.com> (raw)

Hello,

syzbot found the following issue on:

HEAD commit:    36534d3c5453 tcp: use signed arithmetic in tcp_rtx_probe0_..
git tree:       bpf
console+strace: https://syzkaller.appspot.com/x/log.txt?x=1618ee02980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=333ebe38d43c42e2
dashboard link: https://syzkaller.appspot.com/bug?extid=40905bca570ae6784745
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=10d8cf1c980000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=111059ce980000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/4e648f638b5f/disk-36534d3c.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/bbe0d41240f1/vmlinux-36534d3c.xz
kernel image: https://storage.googleapis.com/syzbot-assets/17eb17ecd214/bzImage-36534d3c.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+40905bca570ae6784745@syzkaller.appspotmail.com

================================
WARNING: inconsistent lock state
6.10.0-rc2-syzkaller-00242-g36534d3c5453 #0 Not tainted
--------------------------------
inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
syz-executor289/5091 [HC1[1]:SC0[0]:HE0:SE1] takes:
ffff8880b9438828 (lock#9){?.+.}-{2:2}, at: local_lock_acquire include/linux/local_lock_internal.h:29 [inline]
ffff8880b9438828 (lock#9){?.+.}-{2:2}, at: __mmap_lock_do_trace_released+0x83/0x620 mm/mmap_lock.c:243
{HARDIRQ-ON-W} state was registered at:
  lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754
  local_lock_acquire include/linux/local_lock_internal.h:29 [inline]
  __mmap_lock_do_trace_released+0x9c/0x620 mm/mmap_lock.c:243
  __mmap_lock_trace_released include/linux/mmap_lock.h:42 [inline]
  mmap_read_unlock include/linux/mmap_lock.h:170 [inline]
  process_vm_rw_single_vec mm/process_vm_access.c:110 [inline]
  process_vm_rw_core mm/process_vm_access.c:216 [inline]
  process_vm_rw+0xa60/0xcf0 mm/process_vm_access.c:284
  __do_sys_process_vm_readv mm/process_vm_access.c:296 [inline]
  __se_sys_process_vm_readv mm/process_vm_access.c:292 [inline]
  __x64_sys_process_vm_readv+0xe0/0x100 mm/process_vm_access.c:292
  do_syscall_x64 arch/x86/entry/common.c:52 [inline]
  do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
  entry_SYSCALL_64_after_hwframe+0x77/0x7f
irq event stamp: 2570
hardirqs last  enabled at (2569): [<ffffffff8135203f>] __text_poke+0x9bf/0xd30 arch/x86/kernel/alternative.c:1943
hardirqs last disabled at (2570): [<ffffffff8b86527e>] sysvec_irq_work+0xe/0xc0 arch/x86/kernel/irq_work.c:17
softirqs last  enabled at (2532): [<ffffffff81a66bba>] spin_unlock_bh include/linux/spinlock.h:396 [inline]
softirqs last  enabled at (2532): [<ffffffff81a66bba>] bpf_link_alloc_id kernel/bpf/syscall.c:3170 [inline]
softirqs last  enabled at (2532): [<ffffffff81a66bba>] bpf_link_prime+0x7a/0x1e0 kernel/bpf/syscall.c:3199
softirqs last disabled at (2522): [<ffffffff81a66b8c>] spin_lock_bh include/linux/spinlock.h:356 [inline]
softirqs last disabled at (2522): [<ffffffff81a66b8c>] bpf_link_alloc_id kernel/bpf/syscall.c:3168 [inline]
softirqs last disabled at (2522): [<ffffffff81a66b8c>] bpf_link_prime+0x4c/0x1e0 kernel/bpf/syscall.c:3199

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

       CPU0
       ----
  lock(lock#9);
  <Interrupt>
    lock(lock#9);

 *** DEADLOCK ***

6 locks held by syz-executor289/5091:
 #0: ffffffff8e3809e8 (tracepoints_mutex){+.+.}-{3:3}, at: tracepoint_probe_register_prio_may_exist+0xbb/0x190 kernel/tracepoint.c:478
 #1: ffffffff8e1ce5b0 (cpu_hotplug_lock){++++}-{0:0}, at: static_key_enable+0x12/0x20 kernel/jump_label.c:217
 #2: ffffffff8e3e1a48 (jump_label_mutex){+.+.}-{3:3}, at: jump_label_lock kernel/jump_label.c:27 [inline]
 #2: ffffffff8e3e1a48 (jump_label_mutex){+.+.}-{3:3}, at: static_key_enable_cpuslocked+0xd7/0x260 kernel/jump_label.c:202
 #3: ffffffff8e1e3688 (text_mutex){+.+.}-{3:3}, at: arch_jump_label_transform_apply+0x17/0x30 arch/x86/kernel/jump_label.c:145
 #4: ffffffff8e333fa0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:329 [inline]
 #4: ffffffff8e333fa0 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:781 [inline]
 #4: ffffffff8e333fa0 (rcu_read_lock){....}-{1:2}, at: __pte_offset_map+0x82/0x380 mm/pgtable-generic.c:287
 #5: ffff88801507b078 (ptlock_ptr(ptdesc)#2){+.+.}-{2:2}, at: spin_lock include/linux/spinlock.h:351 [inline]
 #5: ffff88801507b078 (ptlock_ptr(ptdesc)#2){+.+.}-{2:2}, at: __pte_offset_map_lock+0x1ba/0x300 mm/pgtable-generic.c:375

stack backtrace:
CPU: 0 PID: 5091 Comm: syz-executor289 Not tainted 6.10.0-rc2-syzkaller-00242-g36534d3c5453 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/02/2024
Call Trace:
 <IRQ>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
 valid_state+0x13a/0x1c0 kernel/locking/lockdep.c:4013
 mark_lock_irq+0xbb/0xc20 kernel/locking/lockdep.c:4216
 mark_lock+0x223/0x350 kernel/locking/lockdep.c:4678
 mark_usage kernel/locking/lockdep.c:4564 [inline]
 __lock_acquire+0xb8e/0x1fd0 kernel/locking/lockdep.c:5091
 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754
 local_lock_acquire include/linux/local_lock_internal.h:29 [inline]
 __mmap_lock_do_trace_released+0x9c/0x620 mm/mmap_lock.c:243
 __mmap_lock_trace_released include/linux/mmap_lock.h:42 [inline]
 mmap_read_unlock_non_owner include/linux/mmap_lock.h:176 [inline]
 do_mmap_read_unlock+0x5d/0x60 kernel/bpf/task_iter.c:1049
 irq_work_single+0xe2/0x240 kernel/irq_work.c:221
 irq_work_run_list kernel/irq_work.c:252 [inline]
 irq_work_run+0x18b/0x350 kernel/irq_work.c:261
 __sysvec_irq_work+0xb8/0x430 arch/x86/kernel/irq_work.c:22
 instr_sysvec_irq_work arch/x86/kernel/irq_work.c:17 [inline]
 sysvec_irq_work+0x9e/0xc0 arch/x86/kernel/irq_work.c:17
 </IRQ>
 <TASK>
 asm_sysvec_irq_work+0x1a/0x20 arch/x86/include/asm/idtentry.h:738
RIP: 0010:__text_poke+0xa4a/0xd30 arch/x86/kernel/alternative.c:1944
Code: 7c 24 50 00 75 19 e8 d5 05 61 00 eb 18 e8 ce 05 61 00 e8 09 67 51 0a 48 83 7c 24 50 00 74 e7 e8 bc 05 61 00 fb 48 8b 44 24 78 <42> 80 3c 28 00 74 0d 48 8d bc 24 60 01 00 00 e8 12 c8 c6 00 48 8b
RSP: 0018:ffffc900033f76a0 EFLAGS: 00000293
RAX: 1ffff9200067ef00 RBX: 0000000000000000 RCX: ffff8880429c5a00
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
RBP: ffffc900033f7870 R08: ffffffff81352094 R09: 1ffffffff25f56b0
R10: dffffc0000000000 R11: fffffbfff25f56b1 R12: 1ffff9200067eee4
R13: dffffc0000000000 R14: 0000000000000046 R15: ffffffff814262a6
 text_poke arch/x86/kernel/alternative.c:1968 [inline]
 text_poke_bp_batch+0x265/0xb30 arch/x86/kernel/alternative.c:2276
 text_poke_flush arch/x86/kernel/alternative.c:2470 [inline]
 text_poke_finish+0x30/0x50 arch/x86/kernel/alternative.c:2477
 arch_jump_label_transform_apply+0x1c/0x30 arch/x86/kernel/jump_label.c:146
 static_key_enable_cpuslocked+0x136/0x260 kernel/jump_label.c:205
 static_key_enable+0x1a/0x20 kernel/jump_label.c:218
 tracepoint_add_func+0x953/0x9e0 kernel/tracepoint.c:361
 tracepoint_probe_register_prio_may_exist+0x122/0x190 kernel/tracepoint.c:482
 bpf_raw_tp_link_attach+0x48b/0x6e0 kernel/bpf/syscall.c:3875
 bpf_raw_tracepoint_open+0x1c2/0x240 kernel/bpf/syscall.c:3906
 __sys_bpf+0x3c0/0x810 kernel/bpf/syscall.c:5730
 __do_sys_bpf kernel/bpf/syscall.c:5795 [inline]
 __se_sys_bpf kernel/bpf/syscall.c:5793 [inline]
 __x64_sys_bpf+0x7c/0x90 kernel/bpf/syscall.c:5793
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fd578b74e39
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 c1 17 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fff287d14f8 EFLAGS: 00000246 ORIG_RAX: 0000000000000141
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fd578b74e39
RDX: 0000000000000010 RSI: 0000000020000080 RDI: 0000000000000011
RBP: 0000000000000000 R08: 0000000000000006 R09: 0000000000000006
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000001 R15: 0000000000000001
 </TASK>
----------------
Code disassembly (best guess):
   0:	7c 24                	jl     0x26
   2:	50                   	push   %rax
   3:	00 75 19             	add    %dh,0x19(%rbp)
   6:	e8 d5 05 61 00       	call   0x6105e0
   b:	eb 18                	jmp    0x25
   d:	e8 ce 05 61 00       	call   0x6105e0
  12:	e8 09 67 51 0a       	call   0xa516720
  17:	48 83 7c 24 50 00    	cmpq   $0x0,0x50(%rsp)
  1d:	74 e7                	je     0x6
  1f:	e8 bc 05 61 00       	call   0x6105e0
  24:	fb                   	sti
  25:	48 8b 44 24 78       	mov    0x78(%rsp),%rax
* 2a:	42 80 3c 28 00       	cmpb   $0x0,(%rax,%r13,1) <-- trapping instruction
  2f:	74 0d                	je     0x3e
  31:	48 8d bc 24 60 01 00 	lea    0x160(%rsp),%rdi
  38:	00
  39:	e8 12 c8 c6 00       	call   0xc6c850
  3e:	48                   	rex.W
  3f:	8b                   	.byte 0x8b


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup


                 reply	other threads:[~2024-06-14 13:49 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=000000000000c27da9061ad9e101@google.com \
    --to=syzbot+40905bca570ae6784745@syzkaller.appspotmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=netdev@vger.kernel.org \
    --cc=syzkaller-bugs@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.