====================================================== [ INFO: possible circular locking dependency detected ] 4.9.141+ #23 Not tainted ------------------------------------------------------- syz-executor.2/32301 is trying to acquire lock: (&bdev->bd_mutex){+.+.+.}, at: [] blkdev_reread_part+0x1e/0x40 block/ioctl.c:189 but task is already holding lock: (&lo->lo_ctl_mutex#2){+.+.+.}, at: [] lo_compat_ioctl+0x103/0x140 drivers/block/loop.c:1555 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 __lo_release drivers/block/loop.c:1609 [inline] lo_release+0x85/0x1a0 drivers/block/loop.c:1632 __blkdev_put+0x636/0x840 fs/block_dev.c:1598 blkdev_put+0x85/0x560 fs/block_dev.c:1663 blkdev_close+0x8b/0xb0 fs/block_dev.c:1670 __fput+0x263/0x700 fs/file_table.c:208 ____fput+0x15/0x20 fs/file_table.c:244 task_work_run+0x10c/0x180 kernel/task_work.c:116 tracehook_notify_resume include/linux/tracehook.h:191 [inline] exit_to_usermode_loop+0x129/0x150 arch/x86/entry/common.c:162 prepare_exit_to_usermode arch/x86/entry/common.c:194 [inline] syscall_return_slowpath arch/x86/entry/common.c:263 [inline] do_syscall_64+0x3e2/0x550 arch/x86/entry/common.c:290 entry_SYSCALL_64_after_swapgs+0x5d/0xdb 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 lo_open+0x1b/0xa0 drivers/block/loop.c:1589 __blkdev_get+0x263/0xd60 fs/block_dev.c:1282 blkdev_get+0x2da/0x920 fs/block_dev.c:1416 blkdev_open+0x1a5/0x250 fs/block_dev.c:1571 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_sys_open+0x30d/0x5c0 fs/open.c:1072 SYSC_open fs/open.c:1090 [inline] SyS_open+0x2d/0x40 fs/open.c:1085 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_nested+0xc0/0x900 kernel/locking/mutex.c:621 blkdev_reread_part+0x1e/0x40 block/ioctl.c:189 loop_reread_partitions+0x7c/0x90 drivers/block/loop.c:637 loop_set_status+0xa7e/0xfe0 drivers/block/loop.c:1181 loop_set_status_compat+0x9a/0xf0 drivers/block/loop.c:1528 lo_compat_ioctl+0x10e/0x140 drivers/block/loop.c:1556 compat_blkdev_ioctl+0x3a4/0x3630 block/compat_ioctl.c:751 C_SYSC_ioctl fs/compat_ioctl.c:1602 [inline] compat_SyS_ioctl+0x12d/0x1fd0 fs/compat_ioctl.c:1549 do_syscall_32_irqs_on arch/x86/entry/common.c:328 [inline] do_fast_syscall_32+0x2f1/0xa10 arch/x86/entry/common.c:390 entry_SYSENTER_compat+0x90/0xa2 arch/x86/entry/entry_64_compat.S:137 other info that might help us debug this: Chain exists of: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&lo->lo_ctl_mutex#2); lock(loop_index_mutex); lock(&lo->lo_ctl_mutex#2); lock(&bdev->bd_mutex); *** DEADLOCK *** 1 lock held by syz-executor.2/32301: #0: (&lo->lo_ctl_mutex#2){+.+.+.}, at: [] lo_compat_ioctl+0x103/0x140 drivers/block/loop.c:1555 binder: 32300:32303 ioctl c018620c 20000040 returned -1 stack backtrace: CPU: 0 PID: 32301 Comm: syz-executor.2 Not tainted 4.9.141+ #23 ffff8800b450f788 ffffffff81b42e79 ffffffff83c8e360 ffffffff83cb42e0 ffffffff83c8d5e0 ffff8800b3462090 ffff8800b34617c0 ffff8800b450f7d0 ffffffff813fee40 0000000000000001 00000000b3462070 0000000000000001 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_nested+0xc0/0x900 kernel/locking/mutex.c:621 [] blkdev_reread_part+0x1e/0x40 block/ioctl.c:189 [] loop_reread_partitions+0x7c/0x90 drivers/block/loop.c:637 [] loop_set_status+0xa7e/0xfe0 drivers/block/loop.c:1181 [] loop_set_status_compat+0x9a/0xf0 drivers/block/loop.c:1528 [] lo_compat_ioctl+0x10e/0x140 drivers/block/loop.c:1556 [] compat_blkdev_ioctl+0x3a4/0x3630 block/compat_ioctl.c:751 [] C_SYSC_ioctl fs/compat_ioctl.c:1602 [inline] [] compat_SyS_ioctl+0x12d/0x1fd0 fs/compat_ioctl.c:1549 [] do_syscall_32_irqs_on arch/x86/entry/common.c:328 [inline] [] do_fast_syscall_32+0x2f1/0xa10 arch/x86/entry/common.c:390 [] entry_SYSENTER_compat+0x90/0xa2 arch/x86/entry/entry_64_compat.S:137 loop_reread_partitions: partition scan of loop6 (ܽ¬Eñg9‹vP 9_¼¿Ld­Ê¦uPŒ&3¼R¼R'˜?) failed (rc=-13) selinux_nlmsg_perm: 1 callbacks suppressed SELinux: unrecognized netlink message: protocol=0 nlmsg_type=115 sclass=netlink_route_socket pig=32355 comm=syz-executor.3 input: syz0 as /devices/virtual/input/input200 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=115 sclass=netlink_route_socket pig=32355 comm=syz-executor.3 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=12297 sclass=netlink_route_socket pig=32426 comm=syz-executor.2 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=12297 sclass=netlink_route_socket pig=32426 comm=syz-executor.2 SELinux: unrecognized netlink message: protocol=4 nlmsg_type=7057 sclass=netlink_tcpdiag_socket pig=32427 comm=syz-executor.3 audit: type=1400 audit(1573718165.280:259): avc: denied { read } for pid=32433 comm="syz-executor.4" scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=netlink_netfilter_socket permissive=1 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=12297 sclass=netlink_route_socket pig=32428 comm=syz-executor.2 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=12297 sclass=netlink_route_socket pig=32421 comm=syz-executor.2 binder: 32466:32472 IncRefs 0 refcount change on invalid ref 0 ret -22 binder: 32466:32472 BC_REQUEST_DEATH_NOTIFICATION invalid ref 0 binder: 32466:32472 ERROR: BC_REGISTER_LOOPER called without request SELinux: policydb string nux“K´ does not match my string SE Linux binder: 32466:32472 BC_CLEAR_DEATH_NOTIFICATION invalid ref 0 binder: 32505 BINDER_GET_NODE_INFO_FOR_REF: only handle may be non-zero.[ 652.940455] binder: 32505:32506 ioctl c018620c 20000040 returned -22 binder: 32516 BINDER_GET_NODE_INFO_FOR_REF: only handle may be non-zero.[ 653.030767] binder: 32516:32518 ioctl c018620c 20000040 returned -22 binder: 32523 BINDER_GET_NODE_INFO_FOR_REF: only handle may be non-zero.[ 653.129617] audit: type=1400 audit(1573718167.740:260): avc: denied { dac_override } for pid=32515 comm="syz-executor.5" capability=1 scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=cap_userns permissive=1 audit: type=1400 audit(1573718167.750:261): avc: denied { net_admin } for pid=32522 comm="syz-executor.2" capability=12 scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=cap_userns permissive=1 audit: type=1400 audit(1573718167.760:262): avc: denied { create } for pid=32484 comm="syz-executor.1" scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=netlink_generic_socket permissive=1 audit: type=1400 audit(1573718167.760:263): avc: denied { write } for pid=32484 comm="syz-executor.1" scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=netlink_generic_socket permissive=1 audit: type=1400 audit(1573718167.770:264): avc: denied { read } for pid=32484 comm="syz-executor.1" scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=netlink_generic_socket permissive=1 audit: type=1400 audit(1573718167.820:265): avc: denied { net_raw } for pid=32484 comm="syz-executor.1" capability=13 scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=cap_userns permissive=1 binder: 32523:32526 ioctl c018620c 20000040 returned -22 audit: type=1400 audit(1573718167.910:266): avc: denied { sys_admin } for pid=2083 comm="syz-executor.3" capability=21 scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=cap_userns permissive=1 audit: type=1400 audit(1573718167.980:267): avc: denied { dac_override } for pid=32515 comm="syz-executor.5" capability=1 scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=cap_userns permissive=1 audit: type=1400 audit(1573718167.990:268): avc: denied { sys_admin } for pid=2080 comm="syz-executor.5" capability=21 scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=cap_userns permissive=1 SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux binder: 32612 BINDER_GET_NODE_INFO_FOR_REF: only handle may be non-zero.[ 653.680455] binder: 32612:32613 ioctl c018620c 20000040 returned -22 SELinux: unrecognized netlink message: protocol=0 nlmsg_type=115 sclass=netlink_route_socket pig=32631 comm=syz-executor.0 SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: unrecognized netlink message: protocol=0 nlmsg_type=115 sclass=netlink_route_socket pig=32686 comm=syz-executor.0 qtaguid: iface_stat: create(lo): no inet dev qtaguid: iface_stat: create6(lo): no inet dev IPv6: ADDRCONF(NETDEV_CHANGE): lo: link becomes ready SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: unrecognized netlink message: protocol=0 nlmsg_type=29541 sclass=netlink_route_socket pig=32710 comm=syz-executor.0 qtaguid: iface_stat: create6(lo): no inet dev SELinux: unrecognized netlink message: protocol=0 nlmsg_type=29541 sclass=netlink_route_socket pig=32710 comm=syz-executor.0 device lo entered promiscuous mode SELinux: unrecognized netlink message: protocol=0 nlmsg_type=29541 sclass=netlink_route_socket pig=32710 comm=syz-executor.0 device lo left promiscuous mode SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux qtaguid: iface_stat: create(lo): no inet dev qtaguid: iface_stat: create6(lo): no inet dev IPv6: ADDRCONF(NETDEV_CHANGE): lo: link becomes ready qtaguid: iface_stat: create6(lo): no inet dev SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux qtaguid: iface_stat: create(lo): no inet dev qtaguid: iface_stat: create6(lo): no inet dev IPv6: ADDRCONF(NETDEV_CHANGE): lo: link becomes ready qtaguid: iface_stat: create6(lo): no inet dev SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux audit_printk_skb: 21 callbacks suppressed audit: type=1400 audit(1573718171.960:276): avc: denied { create } for pid=413 comm="syz-executor.5" scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tclass=netlink_scsitransport_socket permissive=1 SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux SELinux: policydb string nux“K´ does not match my string SE Linux