device syz_tun entered promiscuous mode device syz_tun left promiscuous mode ====================================================== [ INFO: possible circular locking dependency detected ] 4.9.141+ #1 Not tainted ------------------------------------------------------- syz-executor.0/13923 is trying to acquire lock: (&sig->cred_guard_mutex){+.+.+.}, at: [] proc_pid_attr_write+0x150/0x260 fs/proc/base.c:2548 but task is already holding lock: (&pipe->mutex/1){+.+.+.}, at: [] pipe_lock_nested fs/pipe.c:66 [inline] (&pipe->mutex/1){+.+.+.}, at: [] pipe_lock fs/pipe.c:74 [inline] (&pipe->mutex/1){+.+.+.}, at: [] pipe_wait+0x1a3/0x1d0 fs/pipe.c:122 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: lock_acquire+0x130/0x3e0 kernel/locking/lockdep.c:3756 __mutex_lock_common kernel/locking/mutex.c:521 [inline] mutex_lock_nested+0xc0/0x900 kernel/locking/mutex.c:621 __pipe_lock fs/pipe.c:87 [inline] fifo_open+0x15c/0x9e0 fs/pipe.c:921 do_dentry_open+0x3ef/0xc90 fs/open.c:766 vfs_open+0x11c/0x210 fs/open.c:879 do_last fs/namei.c:3410 [inline] path_openat+0x542/0x2790 fs/namei.c:3534 do_filp_open+0x197/0x270 fs/namei.c:3568 do_open_execat+0x10f/0x640 fs/exec.c:844 do_execveat_common.isra.14+0x687/0x1ed0 fs/exec.c:1723 do_execve fs/exec.c:1829 [inline] SYSC_execve fs/exec.c:1910 [inline] SyS_execve+0x42/0x50 fs/exec.c:1905 do_syscall_64+0x19f/0x550 arch/x86/entry/common.c:285 entry_SYSCALL_64_after_swapgs+0x5d/0xdb check_prev_add kernel/locking/lockdep.c:1828 [inline] check_prevs_add kernel/locking/lockdep.c:1938 [inline] validate_chain kernel/locking/lockdep.c:2265 [inline] __lock_acquire+0x3189/0x4a10 kernel/locking/lockdep.c:3345 lock_acquire+0x130/0x3e0 kernel/locking/lockdep.c:3756 __mutex_lock_common kernel/locking/mutex.c:521 [inline] mutex_lock_interruptible_nested+0xcc/0x9c0 kernel/locking/mutex.c:650 proc_pid_attr_write+0x150/0x260 fs/proc/base.c:2548 __vfs_write+0x115/0x580 fs/read_write.c:507 __kernel_write+0xf8/0x350 fs/read_write.c:529 write_pipe_buf+0x15d/0x1f0 fs/splice.c:816 splice_from_pipe_feed fs/splice.c:521 [inline] __splice_from_pipe+0x316/0x710 fs/splice.c:645 splice_from_pipe+0xf9/0x170 fs/splice.c:680 default_file_splice_write+0x3c/0x80 fs/splice.c:828 do_splice_from fs/splice.c:870 [inline] do_splice fs/splice.c:1166 [inline] SYSC_splice fs/splice.c:1416 [inline] SyS_splice+0xe4d/0x14d0 fs/splice.c:1399 do_syscall_64+0x19f/0x550 arch/x86/entry/common.c:285 entry_SYSCALL_64_after_swapgs+0x5d/0xdb other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&pipe->mutex/1); lock(&sig->cred_guard_mutex); lock(&pipe->mutex/1); lock(&sig->cred_guard_mutex); *** DEADLOCK *** 2 locks held by syz-executor.0/13923: #0: (sb_writers#7){.+.+.+}, at: [] file_start_write include/linux/fs.h:2640 [inline] #0: (sb_writers#7){.+.+.+}, at: [] do_splice fs/splice.c:1165 [inline] #0: (sb_writers#7){.+.+.+}, at: [] SYSC_splice fs/splice.c:1416 [inline] #0: (sb_writers#7){.+.+.+}, at: [] SyS_splice+0x1023/0x14d0 fs/splice.c:1399 #1: (&pipe->mutex/1){+.+.+.}, at: [] pipe_lock_nested fs/pipe.c:66 [inline] #1: (&pipe->mutex/1){+.+.+.}, at: [] pipe_lock fs/pipe.c:74 [inline] #1: (&pipe->mutex/1){+.+.+.}, at: [] pipe_wait+0x1a3/0x1d0 fs/pipe.c:122 stack backtrace: CPU: 1 PID: 13923 Comm: syz-executor.0 Not tainted 4.9.141+ #1 ffff8801d3c475f8 ffffffff81b42e79 ffffffff83ca2fd0 ffffffff83ca9870 ffffffff83ca2fd0 ffff8801a0e067f8 ffff8801a0e05f00 ffff8801d3c47640 ffffffff813fee40 0000000000000002 00000000a0e067d8 0000000000000002 Call Trace: [] __dump_stack lib/dump_stack.c:15 [inline] [] dump_stack+0xc1/0x128 lib/dump_stack.c:51 [] print_circular_bug.cold.36+0x2f7/0x432 kernel/locking/lockdep.c:1202 [] check_prev_add kernel/locking/lockdep.c:1828 [inline] [] check_prevs_add kernel/locking/lockdep.c:1938 [inline] [] validate_chain kernel/locking/lockdep.c:2265 [inline] [] __lock_acquire+0x3189/0x4a10 kernel/locking/lockdep.c:3345 [] lock_acquire+0x130/0x3e0 kernel/locking/lockdep.c:3756 [] __mutex_lock_common kernel/locking/mutex.c:521 [inline] [] mutex_lock_interruptible_nested+0xcc/0x9c0 kernel/locking/mutex.c:650 [] proc_pid_attr_write+0x150/0x260 fs/proc/base.c:2548 [] __vfs_write+0x115/0x580 fs/read_write.c:507 [] __kernel_write+0xf8/0x350 fs/read_write.c:529 [] write_pipe_buf+0x15d/0x1f0 fs/splice.c:816 [] splice_from_pipe_feed fs/splice.c:521 [inline] [] __splice_from_pipe+0x316/0x710 fs/splice.c:645 [] splice_from_pipe+0xf9/0x170 fs/splice.c:680 [] default_file_splice_write+0x3c/0x80 fs/splice.c:828 [] do_splice_from fs/splice.c:870 [inline] [] do_splice fs/splice.c:1166 [inline] [] SYSC_splice fs/splice.c:1416 [inline] [] SyS_splice+0xe4d/0x14d0 fs/splice.c:1399 [] do_syscall_64+0x19f/0x550 arch/x86/entry/common.c:285 [] entry_SYSCALL_64_after_swapgs+0x5d/0xdb selinux_nlmsg_perm: 40437 callbacks suppressed SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14220 comm=syz-executor.0 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14220 comm=syz-executor.0 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14254 comm=syz-executor.4 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14254 comm=syz-executor.4 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14254 comm=syz-executor.4 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14254 comm=syz-executor.4 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14254 comm=syz-executor.4 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14254 comm=syz-executor.4 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14254 comm=syz-executor.4 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=0 sclass=netlink_route_socket pig=14254 comm=syz-executor.4 device syz_tun entered promiscuous mode device syz_tun left promiscuous mode device syz_tun entered promiscuous mode device syz_tun left promiscuous mode device syz_tun entered promiscuous mode device syz_tun left promiscuous mode device syz_tun entered promiscuous mode device syz_tun left promiscuous mode device syz_tun entered promiscuous mode device syz_tun left promiscuous mode