====================================================== WARNING: possible circular locking dependency detected 4.14.232-syzkaller #0 Not tainted ------------------------------------------------------ kworker/u4:2/34 is trying to acquire lock: (k-sk_lock-AF_INET){+.+.}, at: [] lock_sock include/net/sock.h:1471 [inline] (k-sk_lock-AF_INET){+.+.}, at: [] do_tcp_setsockopt.constprop.0+0xfb/0x1c10 net/ipv4/tcp.c:2562 but task is already holding lock: ((&(&cp->cp_send_w)->work)){+.+.}, at: [] process_one_work+0x6e6/0x14a0 kernel/workqueue.c:2091 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 ((&(&cp->cp_send_w)->work)){+.+.}: flush_work+0xad/0x770 kernel/workqueue.c:2889 __cancel_work_timer+0x321/0x460 kernel/workqueue.c:2964 rds_tcp_reset_callbacks+0x18d/0x450 net/rds/tcp.c:167 rds_tcp_accept_one+0x61a/0x8b0 net/rds/tcp_listen.c:194 rds_tcp_accept_worker+0x4d/0x70 net/rds/tcp.c:407 audit: type=1800 audit(1620437461.805:16): pid=10498 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.4" name="file0" dev="sda1" ino=14012 res=0 process_one_work+0x793/0x14a0 kernel/workqueue.c:2116 worker_thread+0x5cc/0xff0 kernel/workqueue.c:2250 kthread+0x30d/0x420 kernel/kthread.c:232 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:404 -> #0 (k-sk_lock-AF_INET){+.+.}: lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 lock_sock_nested+0xb7/0x100 net/core/sock.c:2796 lock_sock include/net/sock.h:1471 [inline] do_tcp_setsockopt.constprop.0+0xfb/0x1c10 net/ipv4/tcp.c:2562 tcp_setsockopt net/ipv4/tcp.c:2830 [inline] tcp_setsockopt+0xa7/0xc0 net/ipv4/tcp.c:2822 kernel_setsockopt+0xfb/0x1b0 net/socket.c:3396 rds_tcp_cork net/rds/tcp_send.c:43 [inline] rds_tcp_xmit_path_prepare+0xaf/0xe0 net/rds/tcp_send.c:50 rds_send_xmit+0x1ae/0x1c00 net/rds/send.c:187 rds_send_worker+0x6d/0x240 net/rds/threads.c:189 process_one_work+0x793/0x14a0 kernel/workqueue.c:2116 worker_thread+0x5cc/0xff0 kernel/workqueue.c:2250 kthread+0x30d/0x420 kernel/kthread.c:232 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:404 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock((&(&cp->cp_send_w)->work)); lock(k-sk_lock-AF_INET); lock((&(&cp->cp_send_w)->work)); lock(k-sk_lock-AF_INET); *** DEADLOCK *** 2 locks held by kworker/u4:2/34: #0: ("%s""krdsd"){+.+.} audit: type=1804 audit(1620437461.815:17): pid=10498 uid=0 auid=4294967295 ses=4294967295 op="invalid_pcr" cause="open_writers" comm="syz-executor.4" name="/root/syzkaller-testdir793093565/syzkaller.4PlBQT/20/file0" dev="sda1" ino=14012 res=1 , at: [] process_one_work+0x6b0/0x14a0 kernel/workqueue.c:2087 #1: ((&(&cp->cp_send_w)->work)){+.+.}, at: [] process_one_work+0x6e6/0x14a0 kernel/workqueue.c:2091 stack backtrace: CPU: 0 PID: 34 Comm: kworker/u4:2 Not tainted 4.14.232-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue: krdsd rds_send_worker Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0x1b2/0x281 lib/dump_stack.c:58 print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1258 check_prev_add kernel/locking/lockdep.c:1905 [inline] check_prevs_add kernel/locking/lockdep.c:2022 [inline] validate_chain kernel/locking/lockdep.c:2464 [inline] __lock_acquire+0x2e0e/0x3f20 kernel/locking/lockdep.c:3491 lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 lock_sock_nested+0xb7/0x100 net/core/sock.c:2796 lock_sock include/net/sock.h:1471 [inline] do_tcp_setsockopt.constprop.0+0xfb/0x1c10 net/ipv4/tcp.c:2562 tcp_setsockopt net/ipv4/tcp.c:2830 [inline] tcp_setsockopt+0xa7/0xc0 net/ipv4/tcp.c:2822 kernel_setsockopt+0xfb/0x1b0 net/socket.c:3396 rds_tcp_cork net/rds/tcp_send.c:43 [inline] rds_tcp_xmit_path_prepare+0xaf/0xe0 net/rds/tcp_send.c:50 rds_send_xmit+0x1ae/0x1c00 net/rds/send.c:187 rds_send_worker+0x6d/0x240 net/rds/threads.c:189 process_one_work+0x793/0x14a0 kernel/workqueue.c:2116 worker_thread+0x5cc/0xff0 kernel/workqueue.c:2250 kthread+0x30d/0x420 kernel/kthread.c:232 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:404 syz-executor.2 (10480): drop_caches: 2 REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" audit: type=1800 audit(1620437462.415:18): pid=10518 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.4" name="file0" dev="sda1" ino=14012 res=0 print_req_error: I/O error, dev loop5, sector 0 audit: type=1804 audit(1620437462.465:19): pid=10518 uid=0 auid=4294967295 ses=4294967295 op="invalid_pcr" cause="open_writers" comm="syz-executor.4" name="/root/syzkaller-testdir793093565/syzkaller.4PlBQT/21/file0" dev="sda1" ino=14012 res=1 EXT4-fs (loop3): mounted filesystem without journal. Opts: ,errors=continue EXT4-fs (loop0): VFS: Can't find ext4 filesystem IPv6: ADDRCONF(NETDEV_CHANGE): lo: link becomes ready REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" EXT4-fs (loop0): VFS: Can't find ext4 filesystem REISERFS warning (device loop3): super-6502 reiserfs_getopt: unknown mount option "hash" EXT4-fs (loop0): VFS: Can't find ext4 filesystem REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" Bluetooth: hci5 command 0x0407 tx timeout netlink: 8 bytes leftover after parsing attributes in process `syz-executor.3'. REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop0): super-6502 reiserfs_getopt: unknown mount option "hash" IPVS: ftp: loaded support on port[0] = 21 REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop0): super-6502 reiserfs_getopt: unknown mount option "hash" IPVS: ftp: loaded support on port[0] = 21 REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" IPVS: ftp: loaded support on port[0] = 21 REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" Bluetooth: hci5 command 0x0405 tx timeout FAULT_INJECTION: forcing a failure. name failslab, interval 1, probability 0, space 0, times 1 CPU: 1 PID: 11119 Comm: syz-executor.4 Not tainted 4.14.232-syzkaller #0 REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0x1b2/0x281 lib/dump_stack.c:58 fail_dump lib/fault-inject.c:51 [inline] should_fail.cold+0x10a/0x149 lib/fault-inject.c:149 should_failslab+0xd6/0x130 mm/failslab.c:32 slab_pre_alloc_hook mm/slab.h:421 [inline] slab_alloc mm/slab.c:3376 [inline] kmem_cache_alloc+0x28e/0x3c0 mm/slab.c:3550 kmem_cache_zalloc include/linux/slab.h:651 [inline] taskstats_tgid_alloc kernel/taskstats.c:579 [inline] taskstats_exit+0x5f3/0xb50 kernel/taskstats.c:618 do_exit+0x52c/0x2850 kernel/exit.c:853 do_group_exit+0x100/0x2e0 kernel/exit.c:965 get_signal+0x38d/0x1ca0 kernel/signal.c:2423 do_signal+0x7c/0x1550 arch/x86/kernel/signal.c:792 exit_to_usermode_loop+0x160/0x200 arch/x86/entry/common.c:160 prepare_exit_to_usermode arch/x86/entry/common.c:199 [inline] syscall_return_slowpath arch/x86/entry/common.c:270 [inline] do_syscall_64+0x4a3/0x640 arch/x86/entry/common.c:297 entry_SYSCALL_64_after_hwframe+0x46/0xbb RIP: 0033:0x4665f9 RSP: 002b:00007f619a6dc188 EFLAGS: 00000246 ORIG_RAX: 000000000000002a RAX: fffffffffffffffc RBX: 000000000056bf60 RCX: 00000000004665f9 RDX: 0000000000000008 RSI: 0000000020000080 RDI: 0000000000000004 RBP: 00007f619a6dc1d0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 00007ffc1739b6df R14: 00007f619a6dc300 R15: 0000000000022000 REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" print_req_error: I/O error, dev loop5, sector 0 REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" print_req_error: I/O error, dev loop5, sector 0 REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash" REISERFS warning (device loop5): super-6502 reiserfs_getopt: unknown mount option "hash"