======================================================== WARNING: possible irq lock inversion dependency detected 6.11.0-syzkaller-10622-gaa486552a110 #0 Not tainted -------------------------------------------------------- ksoftirqd/0/16 just changed the state of lock: ffff8880641b2e10 (&ppp->rlock){+.-.}-{2:2}, at: spin_lock_bh include/linux/spinlock.h:356 [inline] ffff8880641b2e10 (&ppp->rlock){+.-.}-{2:2}, at: ppp_do_recv+0x38/0x26b0 drivers/net/ppp/ppp_generic.c:2210 but this lock took another, SOFTIRQ-unsafe lock in the past: (&pch->downl){+.+.}-{2:2} and interrupts could create inverse lock ordering between them. other info that might help us debug this: Possible interrupt unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&pch->downl); local_irq_disable(); lock(&ppp->rlock); lock(&pch->downl); lock(&ppp->rlock); *** DEADLOCK *** 1 lock held by ksoftirqd/0/16: #0: ffff888026be6248 (&pch->upl){++.-}-{2:2}, at: ppp_input+0x3dc/0xa10 drivers/net/ppp/ppp_generic.c:2307 the shortest dependencies between 2nd lock and 1st lock: -> (&pch->downl){+.+.}-{2:2} { HARDIRQ-ON-W at: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline] _raw_spin_lock_bh+0x35/0x50 kernel/locking/spinlock.c:178 spin_lock_bh include/linux/spinlock.h:356 [inline] ppp_unregister_channel+0x7c/0x300 drivers/net/ppp/ppp_generic.c:2992 pppox_unbind_sock+0x5c/0xb0 drivers/net/ppp/pppox.c:58 pptp_release+0x147/0x300 drivers/net/ppp/pptp.c:519 __sock_release net/socket.c:659 [inline] sock_close+0xbc/0x240 net/socket.c:1427 __fput+0x23f/0x880 fs/file_table.c:431 task_work_run+0x24f/0x310 kernel/task_work.c:228 resume_user_mode_work include/linux/resume_user_mode.h:50 [inline] exit_to_user_mode_loop kernel/entry/common.c:114 [inline] exit_to_user_mode_prepare include/linux/entry-common.h:328 [inline] __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline] syscall_exit_to_user_mode+0x168/0x370 kernel/entry/common.c:218 __do_fast_syscall_32+0xc4/0x110 arch/x86/entry/common.c:389 do_fast_syscall_32+0x34/0x80 arch/x86/entry/common.c:411 entry_SYSENTER_compat_after_hwframe+0x84/0x8e SOFTIRQ-ON-W at: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline] _raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:154 spin_lock include/linux/spinlock.h:351 [inline] ppp_channel_bridge_input drivers/net/ppp/ppp_generic.c:2272 [inline] ppp_input+0x18b/0xa10 drivers/net/ppp/ppp_generic.c:2304 pppoe_rcv_core+0x117/0x310 drivers/net/ppp/pppoe.c:379 sk_backlog_rcv include/net/sock.h:1113 [inline] __release_sock+0x243/0x350 net/core/sock.c:3072 release_sock+0x61/0x1f0 net/core/sock.c:3626 pppoe_sendmsg+0xd5/0x750 drivers/net/ppp/pppoe.c:903 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x221/0x270 net/socket.c:745 ____sys_sendmsg+0x52a/0x7e0 net/socket.c:2603 ___sys_sendmsg net/socket.c:2657 [inline] __sys_sendmmsg+0x4a8/0x730 net/socket.c:2736 __compat_sys_sendmmsg net/compat.c:360 [inline] __do_compat_sys_sendmmsg net/compat.c:367 [inline] __se_compat_sys_sendmmsg net/compat.c:364 [inline] __ia32_compat_sys_sendmmsg+0xa2/0xc0 net/compat.c:364 do_syscall_32_irqs_on arch/x86/entry/common.c:165 [inline] __do_fast_syscall_32+0xb4/0x110 arch/x86/entry/common.c:386 do_fast_syscall_32+0x34/0x80 arch/x86/entry/common.c:411 entry_SYSENTER_compat_after_hwframe+0x84/0x8e INITIAL USE at: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline] _raw_spin_lock_bh+0x35/0x50 kernel/locking/spinlock.c:178 spin_lock_bh include/linux/spinlock.h:356 [inline] ppp_unregister_channel+0x7c/0x300 drivers/net/ppp/ppp_generic.c:2992 pppox_unbind_sock+0x5c/0xb0 drivers/net/ppp/pppox.c:58 pptp_release+0x147/0x300 drivers/net/ppp/pptp.c:519 __sock_release net/socket.c:659 [inline] sock_close+0xbc/0x240 net/socket.c:1427 __fput+0x23f/0x880 fs/file_table.c:431 task_work_run+0x24f/0x310 kernel/task_work.c:228 resume_user_mode_work include/linux/resume_user_mode.h:50 [inline] exit_to_user_mode_loop kernel/entry/common.c:114 [inline] exit_to_user_mode_prepare include/linux/entry-common.h:328 [inline] __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline] syscall_exit_to_user_mode+0x168/0x370 kernel/entry/common.c:218 __do_fast_syscall_32+0xc4/0x110 arch/x86/entry/common.c:389 do_fast_syscall_32+0x34/0x80 arch/x86/entry/common.c:411 entry_SYSENTER_compat_after_hwframe+0x84/0x8e } ... key at: [] ppp_register_net_channel.__key.1+0x0/0x20 ... acquired at: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline] _raw_spin_lock_bh+0x35/0x50 kernel/locking/spinlock.c:178 spin_lock_bh include/linux/spinlock.h:356 [inline] ppp_connect_channel+0x194/0x650 drivers/net/ppp/ppp_generic.c:3485 ppp_ioctl+0xdd4/0x1cd0 drivers/net/ppp/ppp_generic.c:761 ppp_compat_ioctl+0x161/0x770 drivers/net/ppp/ppp_generic.c:1040 __do_compat_sys_ioctl fs/ioctl.c:1007 [inline] __se_compat_sys_ioctl+0x510/0xc90 fs/ioctl.c:950 do_syscall_32_irqs_on arch/x86/entry/common.c:165 [inline] __do_fast_syscall_32+0xb4/0x110 arch/x86/entry/common.c:386 do_fast_syscall_32+0x34/0x80 arch/x86/entry/common.c:411 entry_SYSENTER_compat_after_hwframe+0x84/0x8e -> (&ppp->rlock){+.-.}-{2:2} { HARDIRQ-ON-W at: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline] _raw_spin_lock_bh+0x35/0x50 kernel/locking/spinlock.c:178 spin_lock_bh include/linux/spinlock.h:356 [inline] ppp_get_stats64+0x33/0x290 drivers/net/ppp/ppp_generic.c:1534 dev_get_stats+0xad/0xa00 net/core/dev.c:10937 rtnl_fill_stats+0x47/0x880 net/core/rtnetlink.c:1268 rtnl_fill_ifinfo+0x18da/0x2270 net/core/rtnetlink.c:1909 rtmsg_ifinfo_build_skb+0x18a/0x260 net/core/rtnetlink.c:4079 rtmsg_ifinfo_event net/core/rtnetlink.c:4112 [inline] rtmsg_ifinfo+0x91/0x1b0 net/core/rtnetlink.c:4121 register_netdevice+0x1774/0x1b00 net/core/dev.c:10534 ppp_unit_register drivers/net/ppp/ppp_generic.c:1219 [inline] ppp_dev_configure+0x883/0xb10 drivers/net/ppp/ppp_generic.c:1275 ppp_create_interface drivers/net/ppp/ppp_generic.c:3348 [inline] ppp_unattached_ioctl drivers/net/ppp/ppp_generic.c:1060 [inline] ppp_ioctl+0x797/0x1cd0 drivers/net/ppp/ppp_generic.c:733 ppp_compat_ioctl+0x161/0x770 drivers/net/ppp/ppp_generic.c:1040 __do_compat_sys_ioctl fs/ioctl.c:1007 [inline] __se_compat_sys_ioctl+0x510/0xc90 fs/ioctl.c:950 do_syscall_32_irqs_on arch/x86/entry/common.c:165 [inline] __do_fast_syscall_32+0xb4/0x110 arch/x86/entry/common.c:386 do_fast_syscall_32+0x34/0x80 arch/x86/entry/common.c:411 entry_SYSENTER_compat_after_hwframe+0x84/0x8e IN-SOFTIRQ-W at: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline] _raw_spin_lock_bh+0x35/0x50 kernel/locking/spinlock.c:178 spin_lock_bh include/linux/spinlock.h:356 [inline] ppp_do_recv+0x38/0x26b0 drivers/net/ppp/ppp_generic.c:2210 ppp_input+0x5de/0xa10 drivers/net/ppp/ppp_generic.c:2327 ppp_async_process+0x7f/0x150 drivers/net/ppp/ppp_async.c:495 tasklet_action_common+0x321/0x4d0 kernel/softirq.c:784 handle_softirqs+0x2c5/0x980 kernel/softirq.c:554 run_ksoftirqd+0xca/0x130 kernel/softirq.c:927 smpboot_thread_fn+0x544/0xa30 kernel/smpboot.c:164 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 INITIAL USE at: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline] _raw_spin_lock_bh+0x35/0x50 kernel/locking/spinlock.c:178 spin_lock_bh include/linux/spinlock.h:356 [inline] ppp_get_stats64+0x33/0x290 drivers/net/ppp/ppp_generic.c:1534 dev_get_stats+0xad/0xa00 net/core/dev.c:10937 rtnl_fill_stats+0x47/0x880 net/core/rtnetlink.c:1268 rtnl_fill_ifinfo+0x18da/0x2270 net/core/rtnetlink.c:1909 rtmsg_ifinfo_build_skb+0x18a/0x260 net/core/rtnetlink.c:4079 rtmsg_ifinfo_event net/core/rtnetlink.c:4112 [inline] rtmsg_ifinfo+0x91/0x1b0 net/core/rtnetlink.c:4121 register_netdevice+0x1774/0x1b00 net/core/dev.c:10534 ppp_unit_register drivers/net/ppp/ppp_generic.c:1219 [inline] ppp_dev_configure+0x883/0xb10 drivers/net/ppp/ppp_generic.c:1275 ppp_create_interface drivers/net/ppp/ppp_generic.c:3348 [inline] ppp_unattached_ioctl drivers/net/ppp/ppp_generic.c:1060 [inline] ppp_ioctl+0x797/0x1cd0 drivers/net/ppp/ppp_generic.c:733 ppp_compat_ioctl+0x161/0x770 drivers/net/ppp/ppp_generic.c:1040 __do_compat_sys_ioctl fs/ioctl.c:1007 [inline] __se_compat_sys_ioctl+0x510/0xc90 fs/ioctl.c:950 do_syscall_32_irqs_on arch/x86/entry/common.c:165 [inline] __do_fast_syscall_32+0xb4/0x110 arch/x86/entry/common.c:386 do_fast_syscall_32+0x34/0x80 arch/x86/entry/common.c:411 entry_SYSENTER_compat_after_hwframe+0x84/0x8e } ... key at: [] ppp_dev_configure.__key+0x0/0x20 ... acquired at: mark_lock+0x223/0x360 kernel/locking/lockdep.c:4722 __lock_acquire+0xbf9/0x2050 kernel/locking/lockdep.c:5153 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline] _raw_spin_lock_bh+0x35/0x50 kernel/locking/spinlock.c:178 spin_lock_bh include/linux/spinlock.h:356 [inline] ppp_do_recv+0x38/0x26b0 drivers/net/ppp/ppp_generic.c:2210 ppp_input+0x5de/0xa10 drivers/net/ppp/ppp_generic.c:2327 ppp_async_process+0x7f/0x150 drivers/net/ppp/ppp_async.c:495 tasklet_action_common+0x321/0x4d0 kernel/softirq.c:784 handle_softirqs+0x2c5/0x980 kernel/softirq.c:554 run_ksoftirqd+0xca/0x130 kernel/softirq.c:927 smpboot_thread_fn+0x544/0xa30 kernel/smpboot.c:164 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 stack backtrace: CPU: 0 UID: 0 PID: 16 Comm: ksoftirqd/0 Not tainted 6.11.0-syzkaller-10622-gaa486552a110 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024 Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120 print_irq_inversion_bug+0x33d/0x390 kernel/locking/lockdep.c:4118 mark_lock_irq+0x80c/0xc20 kernel/locking/lockdep.c:4287 mark_lock+0x223/0x360 kernel/locking/lockdep.c:4722 __lock_acquire+0xbf9/0x2050 kernel/locking/lockdep.c:5153 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5822 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:126 [inline] _raw_spin_lock_bh+0x35/0x50 kernel/locking/spinlock.c:178 spin_lock_bh include/linux/spinlock.h:356 [inline] ppp_do_recv+0x38/0x26b0 drivers/net/ppp/ppp_generic.c:2210 ppp_input+0x5de/0xa10 drivers/net/ppp/ppp_generic.c:2327 ppp_async_process+0x7f/0x150 drivers/net/ppp/ppp_async.c:495 tasklet_action_common+0x321/0x4d0 kernel/softirq.c:784 handle_softirqs+0x2c5/0x980 kernel/softirq.c:554 run_ksoftirqd+0xca/0x130 kernel/softirq.c:927 smpboot_thread_fn+0x544/0xa30 kernel/smpboot.c:164 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244