================================ WARNING: inconsistent lock state 4.14.307-syzkaller #0 Not tainted -------------------------------- inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage. syz-executor.2/10412 [HC0[0]:SC1[1]:HE1:SE0] takes: (&(&local->client_conns_lock)->rlock){+.?.}, at: [] spin_lock include/linux/spinlock.h:317 [inline] (&(&local->client_conns_lock)->rlock){+.?.}, at: [] rxrpc_put_one_client_conn net/rxrpc/conn_client.c:905 [inline] (&(&local->client_conns_lock)->rlock){+.?.}, at: [] rxrpc_put_client_conn+0x661/0xac0 net/rxrpc/conn_client.c:957 {SOFTIRQ-ON-W} state was registered at: lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline] _raw_spin_lock+0x2a/0x40 kernel/locking/spinlock.c:152 spin_lock include/linux/spinlock.h:317 [inline] rxrpc_get_client_conn net/rxrpc/conn_client.c:306 [inline] rxrpc_connect_call+0x2bb/0x3e10 net/rxrpc/conn_client.c:692 rxrpc_new_client_call+0x8f4/0x1a10 net/rxrpc/call_object.c:276 rxrpc_new_client_call_for_sendmsg net/rxrpc/sendmsg.c:531 [inline] rxrpc_do_sendmsg+0x8dc/0xfb0 net/rxrpc/sendmsg.c:583 rxrpc_sendmsg+0x3cf/0x5f0 net/rxrpc/af_rxrpc.c:543 sock_sendmsg_nosec net/socket.c:646 [inline] sock_sendmsg+0xb5/0x100 net/socket.c:656 ___sys_sendmsg+0x6c8/0x800 net/socket.c:2062 __sys_sendmsg+0xa3/0x120 net/socket.c:2096 SYSC_sendmsg net/socket.c:2107 [inline] SyS_sendmsg+0x27/0x40 net/socket.c:2103 BTRFS: device fsid 24c7a497-3402-47dd-bef8-82358f5f30e0 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 irq event stamp: 25250 devid 1 transid 8 /dev/loop1 hardirqs last enabled at (25250): [] __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:160 [inline] hardirqs last enabled at (25250): [] _raw_spin_unlock_irqrestore+0x79/0xe0 kernel/locking/spinlock.c:192 hardirqs last disabled at (25249): [] __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:108 [inline] hardirqs last disabled at (25249): [] _raw_spin_lock_irqsave+0x66/0xc0 kernel/locking/spinlock.c:160 softirqs last enabled at (14980): [] __do_softirq+0x68b/0x9ff kernel/softirq.c:314 softirqs last disabled at (25195): [] invoke_softirq kernel/softirq.c:368 [inline] softirqs last disabled at (25195): [] irq_exit+0x193/0x240 kernel/softirq.c:409 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&(&local->client_conns_lock)->rlock); lock(&(&local->client_conns_lock)->rlock); *** DEADLOCK *** 3 locks held by syz-executor.2/10412: #0: (sb_writers#6){.+.+}, at: [] file_start_write include/linux/fs.h:2714 [inline] #0: (sb_writers#6){.+.+}, at: [] vfs_write+0x3d8/0x4d0 fs/read_write.c:543 #1: (&sb->s_type->i_mutex_key#15){+.+.}, at: [] inode_lock include/linux/fs.h:719 [inline] #1: (&sb->s_type->i_mutex_key#15){+.+.}, at: [] generic_file_write_iter+0x99/0x650 mm/filemap.c:3205 #2: (rcu_callback){....}, at: [] __rcu_reclaim kernel/rcu/rcu.h:185 [inline] #2: (rcu_callback){....}, at: [] rcu_do_batch kernel/rcu/tree.c:2699 [inline] #2: (rcu_callback){....}, at: [] invoke_rcu_callbacks kernel/rcu/tree.c:2962 [inline] #2: (rcu_callback){....}, at: [] __rcu_process_callbacks kernel/rcu/tree.c:2929 [inline] #2: (rcu_callback){....}, at: [] rcu_process_callbacks+0x84e/0x1180 kernel/rcu/tree.c:2946 stack backtrace: CPU: 0 PID: 10412 Comm: syz-executor.2 Not tainted 4.14.307-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/16/2023 Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0x1b2/0x281 lib/dump_stack.c:58 print_usage_bug.cold+0x42e/0x570 kernel/locking/lockdep.c:2589 valid_state kernel/locking/lockdep.c:2602 [inline] mark_lock_irq kernel/locking/lockdep.c:2796 [inline] mark_lock+0xb4d/0x1050 kernel/locking/lockdep.c:3194 mark_irqflags kernel/locking/lockdep.c:3072 [inline] __lock_acquire+0xc81/0x3f20 kernel/locking/lockdep.c:3448 lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline] _raw_spin_lock+0x2a/0x40 kernel/locking/spinlock.c:152 spin_lock include/linux/spinlock.h:317 [inline] rxrpc_put_one_client_conn net/rxrpc/conn_client.c:905 [inline] rxrpc_put_client_conn+0x661/0xac0 net/rxrpc/conn_client.c:957 rxrpc_put_connection net/rxrpc/ar-internal.h:862 [inline] rxrpc_rcu_destroy_call+0x83/0x190 net/rxrpc/call_object.c:653 __rcu_reclaim kernel/rcu/rcu.h:195 [inline] rcu_do_batch kernel/rcu/tree.c:2699 [inline] invoke_rcu_callbacks kernel/rcu/tree.c:2962 [inline] __rcu_process_callbacks kernel/rcu/tree.c:2929 [inline] rcu_process_callbacks+0x780/0x1180 kernel/rcu/tree.c:2946 __do_softirq+0x24d/0x9ff kernel/softirq.c:288 invoke_softirq kernel/softirq.c:368 [inline] irq_exit+0x193/0x240 kernel/softirq.c:409 exiting_irq arch/x86/include/asm/apic.h:638 [inline] smp_apic_timer_interrupt+0x141/0x5e0 arch/x86/kernel/apic/apic.c:1106 apic_timer_interrupt+0x93/0xa0 arch/x86/entry/entry_64.S:796 RIP: 0010:arch_local_irq_restore arch/x86/include/asm/paravirt.h:779 [inline] RIP: 0010:rmqueue_pcplist mm/page_alloc.c:2807 [inline] RIP: 0010:rmqueue mm/page_alloc.c:2824 [inline] RIP: 0010:get_page_from_freelist+0xad7/0x25a0 mm/page_alloc.c:3173 RSP: 0018:ffff88806e2474f0 EFLAGS: 00000282 ORIG_RAX: ffffffffffffff10 RAX: 1ffffffff11e13d9 RBX: 0000000000000000 RCX: 1ffff1100dc47532 RDX: 0000000000000000 RSI: ffff88806e23a970 RDI: 0000000000000282 RBP: 0000000000000004 R08: ffffea0001c9aa00 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: ffffea0001c9aa00 R13: dffffc0000000000 R14: 0000000000000000 R15: ffff88813fffb6c0 __alloc_pages_nodemask+0x352/0x2900 mm/page_alloc.c:4219 alloc_pages_vma+0xd2/0x6d0 mm/mempolicy.c:2072 shmem_alloc_page+0xe0/0x180 mm/shmem.c:1480 shmem_alloc_and_acct_page+0x126/0x620 mm/shmem.c:1505 shmem_getpage_gfp+0x302/0x2a40 mm/shmem.c:1782 shmem_getpage mm/shmem.c:131 [inline] shmem_write_begin+0xeb/0x190 mm/shmem.c:2431 generic_perform_write+0x1d5/0x430 mm/filemap.c:3055 __generic_file_write_iter+0x227/0x590 mm/filemap.c:3180 generic_file_write_iter+0x36f/0x650 mm/filemap.c:3208 call_write_iter include/linux/fs.h:1780 [inline] new_sync_write fs/read_write.c:469 [inline] __vfs_write+0x44c/0x630 fs/read_write.c:482 vfs_write+0x17f/0x4d0 fs/read_write.c:544 SYSC_write fs/read_write.c:590 [inline] SyS_write+0xf2/0x210 fs/read_write.c:582 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 RIP: 0033:0x7f137da50e7f RSP: 002b:00007f137c010f10 EFLAGS: 00000293 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f137da50e7f RDX: 0000000001000000 RSI: 00007f1373bf1000 RDI: 0000000000000003 RBP: 00007f1373bf1000 R08: 0000000000000000 R09: 0000000000005ce2 R10: 0000000001000000 R11: 0000000000000293 R12: 0000000000000000 R13: 00007f137c010fdc R14: 00007f137c010fe0 R15: 0000000020005dc2 BTRFS info (device loop1): enabling inode map caching BTRFS info (device loop1): trying to use backup root at mount time BTRFS info (device loop1): use zlib compression BTRFS info (device loop1): enabling ssd optimizations BTRFS info (device loop1): using spread ssd allocation scheme BTRFS info (device loop1): using free space tree gfs2: can't find protocol dlm BTRFS info (device loop1): has skinny extents BTRFS info (device loop3): enabling inode map caching BTRFS info (device loop3): trying to use backup root at mount time BTRFS info (device loop3): use zlib compression BTRFS info (device loop3): enabling ssd optimizations BTRFS info (device loop3): using spread ssd allocation scheme BTRFS info (device loop3): using free space tree BTRFS info (device loop3): has skinny extents gfs2: can't find protocol dlm gfs2: can't find protocol dlm BTRFS info (device loop4): enabling inode map caching BTRFS info (device loop4): trying to use backup root at mount time BTRFS info (device loop4): use zlib compression BTRFS info (device loop4): enabling ssd optimizations BTRFS info (device loop4): using spread ssd allocation scheme BTRFS info (device loop4): using free space tree BTRFS info (device loop4): has skinny extents gfs2: can't find protocol dlm BTRFS info (device loop4): enabling inode map caching BTRFS info (device loop4): trying to use backup root at mount time BTRFS info (device loop4): use zlib compression BTRFS info (device loop4): enabling ssd optimizations BTRFS info (device loop4): using spread ssd allocation scheme BTRFS info (device loop4): using free space tree BTRFS info (device loop4): has skinny extents REISERFS (device loop5): found reiserfs format "3.5" with non-standard journal REISERFS (device loop5): using ordered data mode reiserfs: using flush barriers REISERFS (device loop5): journal params: device loop5, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop5): checking transaction log (loop5) REISERFS (device loop5): Using r5 hash to sort names overlayfs: fs on './file0' does not support file handles, falling back to index=off. REISERFS (device loop5): found reiserfs format "3.5" with non-standard journal REISERFS (device loop5): using ordered data mode reiserfs: using flush barriers REISERFS (device loop5): journal params: device loop5, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop5): checking transaction log (loop5) REISERFS (device loop5): Using r5 hash to sort names overlayfs: fs on './file0' does not support file handles, falling back to index=off. REISERFS (device loop2): found reiserfs format "3.5" with non-standard journal REISERFS (device loop2): using ordered data mode reiserfs: using flush barriers REISERFS (device loop5): found reiserfs format "3.5" with non-standard journal REISERFS (device loop5): using ordered data mode reiserfs: using flush barriers REISERFS (device loop5): journal params: device loop5, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop5): checking transaction log (loop5) REISERFS (device loop5): Using r5 hash to sort names REISERFS (device loop2): journal params: device loop2, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop2): checking transaction log (loop2) REISERFS (device loop2): Using r5 hash to sort names overlayfs: failed to resolve './file1': -2 overlayfs: fs on './file0' does not support file handles, falling back to index=off. REISERFS (device loop3): found reiserfs format "3.5" with non-standard journal REISERFS (device loop3): using ordered data mode reiserfs: using flush barriers REISERFS (device loop3): journal params: device loop3, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop3): checking transaction log (loop3) REISERFS (device loop3): Using r5 hash to sort names REISERFS (device loop5): found reiserfs format "3.5" with non-standard journal REISERFS (device loop5): using ordered data mode reiserfs: using flush barriers REISERFS (device loop5): journal params: device loop5, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop5): checking transaction log (loop5) REISERFS (device loop5): Using r5 hash to sort names overlayfs: fs on './file0' does not support file handles, falling back to index=off. overlayfs: fs on './file0' does not support file handles, falling back to index=off. REISERFS (device loop2): found reiserfs format "3.5" with non-standard journal REISERFS (device loop2): using ordered data mode reiserfs: using flush barriers REISERFS (device loop2): journal params: device loop2, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop2): checking transaction log (loop2) REISERFS (device loop2): Using r5 hash to sort names overlayfs: fs on './file0' does not support file handles, falling back to index=off. REISERFS (device loop5): found reiserfs format "3.5" with non-standard journal REISERFS (device loop5): using ordered data mode reiserfs: using flush barriers REISERFS (device loop5): journal params: device loop5, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop3): found reiserfs format "3.5" with non-standard journal REISERFS (device loop3): using ordered data mode reiserfs: using flush barriers REISERFS (device loop3): journal params: device loop3, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop3): checking transaction log (loop3) REISERFS (device loop3): Using r5 hash to sort names REISERFS (device loop2): found reiserfs format "3.5" with non-standard journal REISERFS (device loop2): using ordered data mode reiserfs: using flush barriers REISERFS (device loop2): journal params: device loop2, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop2): checking transaction log (loop2) REISERFS (device loop2): Using r5 hash to sort names overlayfs: fs on './file0' does not support file handles, falling back to index=off. overlayfs: fs on './file0' does not support file handles, falling back to index=off. REISERFS (device loop5): checking transaction log (loop5) REISERFS (device loop5): Using r5 hash to sort names overlayfs: fs on './file0' does not support file handles, falling back to index=off. REISERFS (device loop3): found reiserfs format "3.5" with non-standard journal REISERFS (device loop3): using ordered data mode reiserfs: using flush barriers REISERFS (device loop3): journal params: device loop3, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop3): checking transaction log (loop3) REISERFS (device loop3): Using r5 hash to sort names REISERFS (device loop5): found reiserfs format "3.5" with non-standard journal REISERFS (device loop5): using ordered data mode reiserfs: using flush barriers REISERFS (device loop5): journal params: device loop5, size 512, journal first block 18, max trans len 256, max batch 225, max commit age 30, max trans age 30 REISERFS (device loop5): checking transaction log (loop5) REISERFS (device loop5): Using r5 hash to sort names overlayfs: fs on './file0' does not support file handles, falling back to index=off. overlayfs: fs on './file0' does not support file handles, falling back to index=off.