=============================
[ 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