============================= [ BUG: Invalid wait context ] syzkaller #0 Not tainted ----------------------------- kswapd0/69 is trying to lock: ffff88801ad49bb0 (&gpc->lock){....}-{3:3}, at: kvm_xen_set_evtchn_fast+0x1f4/0x9a0 arch/x86/kvm/xen.c:1822 other info that might help us debug this: context-{2:2} 2 locks held by kswapd0/69: #0: ffffffff8ec86cc0 (fs_reclaim){+.+.}-{0:0}, at: balance_pgdat mm/vmscan.c:7084 [inline] #0: ffffffff8ec86cc0 (fs_reclaim){+.+.}-{0:0}, at: kswapd+0x9b6/0x31c0 mm/vmscan.c:7462 #1: ffff88801ad4a110 (&kvm->srcu){.?.+}-{0:0}, at: srcu_lock_acquire include/linux/srcu.h:187 [inline] #1: ffff88801ad4a110 (&kvm->srcu){.?.+}-{0:0}, at: srcu_read_lock include/linux/srcu.h:294 [inline] #1: ffff88801ad4a110 (&kvm->srcu){.?.+}-{0:0}, at: kvm_xen_set_evtchn_fast+0x1bc/0x9a0 arch/x86/kvm/xen.c:1820 stack backtrace: CPU: 0 UID: 0 PID: 69 Comm: kswapd0 Not tainted syzkaller #0 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Call Trace: dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120 print_lock_invalid_wait_context kernel/locking/lockdep.c:4830 [inline] check_wait_context kernel/locking/lockdep.c:4902 [inline] __lock_acquire+0xe39/0x2cf0 kernel/locking/lockdep.c:5187 lock_acquire+0x106/0x350 kernel/locking/lockdep.c:5868 __raw_read_lock_irqsave include/linux/rwlock_api_smp.h:174 [inline] _raw_read_lock_irqsave+0x48/0x60 kernel/locking/spinlock.c:240 kvm_xen_set_evtchn_fast+0x1f4/0x9a0 arch/x86/kvm/xen.c:1822 xen_timer_callback+0x109/0x220 arch/x86/kvm/xen.c:140 __run_hrtimer kernel/time/hrtimer.c:2032 [inline] __hrtimer_run_queues+0x371/0xa10 kernel/time/hrtimer.c:2096 hrtimer_interrupt+0x448/0x910 kernel/time/hrtimer.c:2215 local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1051 [inline] __sysvec_apic_timer_interrupt+0x102/0x430 arch/x86/kernel/apic/apic.c:1068 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1062 [inline] sysvec_apic_timer_interrupt+0xa1/0xc0 arch/x86/kernel/apic/apic.c:1062 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:674 RIP: 0010:root_reclaim mm/vmscan.c:215 [inline] RIP: 0010:try_to_shrink_lruvec+0xb8b/0xed0 mm/vmscan.c:4994 Code: 00 00 00 4c 89 ff 48 89 de e8 61 07 00 00 84 c0 0f 85 e2 00 00 00 48 b8 00 00 00 00 00 fc ff df 41 80 3c 04 00 4c 8b 7c 24 70 <74> 08 4c 89 ff e8 bb 85 24 00 49 8b 1f 48 85 db 74 3c 48 b8 00 00 RSP: 0000:ffffc90000aef560 EFLAGS: 00000246 RAX: dffffc0000000000 RBX: ffffc90000aefcb0 RCX: ffff888000ef2540 RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffff88802fffb850 RBP: ffffc90000aef6a8 R08: ffff88802fffb857 R09: 1ffff11005fff70a R10: dffffc0000000000 R11: ffffed1005fff70b R12: 1ffff9200015df98 R13: 0000000000000016 R14: 0000000000000003 R15: ffffc90000aefcc0 shrink_one+0x233/0x730 mm/vmscan.c:5024 shrink_many mm/vmscan.c:5087 [inline] lru_gen_shrink_node mm/vmscan.c:5165 [inline] shrink_node+0x3303/0x3b60 mm/vmscan.c:6154 kswapd_shrink_node mm/vmscan.c:7008 [inline] balance_pgdat mm/vmscan.c:7186 [inline] kswapd+0x17b6/0x31c0 mm/vmscan.c:7462 kthread+0x388/0x470 kernel/kthread.c:436 ret_from_fork+0x514/0xb70 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 ---------------- Code disassembly (best guess): 0: 00 00 add %al,(%rax) 2: 00 4c 89 ff add %cl,-0x1(%rcx,%rcx,4) 6: 48 89 de mov %rbx,%rsi 9: e8 61 07 00 00 call 0x76f e: 84 c0 test %al,%al 10: 0f 85 e2 00 00 00 jne 0xf8 16: 48 b8 00 00 00 00 00 movabs $0xdffffc0000000000,%rax 1d: fc ff df 20: 41 80 3c 04 00 cmpb $0x0,(%r12,%rax,1) 25: 4c 8b 7c 24 70 mov 0x70(%rsp),%r15 * 2a: 74 08 je 0x34 <-- trapping instruction 2c: 4c 89 ff mov %r15,%rdi 2f: e8 bb 85 24 00 call 0x2485ef 34: 49 8b 1f mov (%r15),%rbx 37: 48 85 db test %rbx,%rbx 3a: 74 3c je 0x78 3c: 48 rex.W 3d: b8 .byte 0xb8