nla_parse: 4 callbacks suppressed netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. IPv6: ADDRCONF(NETDEV_CHANGE): bond2: link becomes ready IPv6: ADDRCONF(NETDEV_CHANGE): vlan2: link becomes ready ============================================ WARNING: possible recursive locking detected 4.19.211-syzkaller #0 Not tainted -------------------------------------------- kworker/1:4/9340 is trying to acquire lock: 0000000046392e59 (&vlan_netdev_addr_lock_key/1){+...}, at: netif_addr_lock_nested include/linux/netdevice.h:4007 [inline] 0000000046392e59 (&vlan_netdev_addr_lock_key/1){+...}, at: dev_uc_sync_multiple+0x11a/0x1e0 net/core/dev_addr_lists.c:574 but task is already holding lock: 00000000c5d29248 (&vlan_netdev_addr_lock_key/1){+...}, at: spin_lock_bh include/linux/spinlock.h:334 [inline] 00000000c5d29248 (&vlan_netdev_addr_lock_key/1){+...}, at: netif_addr_lock_bh include/linux/netdevice.h:4012 [inline] 00000000c5d29248 (&vlan_netdev_addr_lock_key/1){+...}, at: __dev_mc_add net/core/dev_addr_lists.c:669 [inline] 00000000c5d29248 (&vlan_netdev_addr_lock_key/1){+...}, at: dev_mc_add+0x1f/0xb0 net/core/dev_addr_lists.c:687 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&vlan_netdev_addr_lock_key/1); lock(&vlan_netdev_addr_lock_key/1); *** DEADLOCK *** May be due to missing lock nesting notation 7 locks held by kworker/1:4/9340: #0: 000000006aafd9fe ((wq_completion)"%s"("ipv6_addrconf")){+.+.}, at: process_one_work+0x767/0x1570 kernel/workqueue.c:2124 #1: 000000005ba89061 ((work_completion)(&(&ifa->dad_work)->work)){+.+.}, at: process_one_work+0x79c/0x1570 kernel/workqueue.c:2128 #2: 00000000b7d58177 (rtnl_mutex){+.+.}, at: addrconf_dad_work+0x9c/0x10a0 net/ipv6/addrconf.c:3989 #3: 00000000dae7ca5c (&(&mc->mca_lock)->rlock){+.-.}, at: spin_lock_bh include/linux/spinlock.h:334 [inline] #3: 00000000dae7ca5c (&(&mc->mca_lock)->rlock){+.-.}, at: igmp6_group_added+0x154/0x5d0 net/ipv6/mcast.c:672 #4: 00000000c5d29248 (&vlan_netdev_addr_lock_key/1){+...}, at: spin_lock_bh include/linux/spinlock.h:334 [inline] #4: 00000000c5d29248 (&vlan_netdev_addr_lock_key/1){+...}, at: netif_addr_lock_bh include/linux/netdevice.h:4012 [inline] #4: 00000000c5d29248 (&vlan_netdev_addr_lock_key/1){+...}, at: __dev_mc_add net/core/dev_addr_lists.c:669 [inline] #4: 00000000c5d29248 (&vlan_netdev_addr_lock_key/1){+...}, at: dev_mc_add+0x1f/0xb0 net/core/dev_addr_lists.c:687 #5: 000000001ccca385 (&dev_addr_list_lock_key/3){+...}, at: netif_addr_lock_nested include/linux/netdevice.h:4007 [inline] #5: 000000001ccca385 (&dev_addr_list_lock_key/3){+...}, at: dev_mc_sync+0x11a/0x1e0 net/core/dev_addr_lists.c:765 #6: 000000003ea5fcaa (rcu_read_lock){....}, at: bond_set_rx_mode+0x0/0x490 drivers/net/bonding/bond_main.c:3481 stack backtrace: CPU: 1 PID: 9340 Comm: kworker/1:4 Not tainted 4.19.211-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022 Workqueue: ipv6_addrconf addrconf_dad_work Call Trace: __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0x1fc/0x2ef lib/dump_stack.c:118 print_deadlock_bug kernel/locking/lockdep.c:1764 [inline] check_deadlock kernel/locking/lockdep.c:1808 [inline] validate_chain kernel/locking/lockdep.c:2404 [inline] __lock_acquire.cold+0x121/0x57e kernel/locking/lockdep.c:3416 lock_acquire+0x170/0x3c0 kernel/locking/lockdep.c:3908 _raw_spin_lock_nested+0x30/0x40 kernel/locking/spinlock.c:354 netif_addr_lock_nested include/linux/netdevice.h:4007 [inline] dev_uc_sync_multiple+0x11a/0x1e0 net/core/dev_addr_lists.c:574 bond_set_rx_mode+0x1ae/0x490 drivers/net/bonding/bond_main.c:3646 __dev_set_rx_mode+0x1d9/0x2f0 net/core/dev.c:7601 dev_mc_sync+0x193/0x1e0 net/core/dev_addr_lists.c:768 vlan_dev_set_rx_mode+0x38/0x80 net/8021q/vlan_dev.c:488 __dev_set_rx_mode+0x1d9/0x2f0 net/core/dev.c:7601 __dev_mc_add net/core/dev_addr_lists.c:673 [inline] dev_mc_add+0xa1/0xb0 net/core/dev_addr_lists.c:687 igmp6_group_added+0x4bc/0x5d0 net/ipv6/mcast.c:676 __ipv6_dev_mc_inc+0x728/0xa80 net/ipv6/mcast.c:935 addrconf_join_solict net/ipv6/addrconf.c:2101 [inline] addrconf_join_solict net/ipv6/addrconf.c:2093 [inline] addrconf_dad_begin net/ipv6/addrconf.c:3895 [inline] addrconf_dad_work+0xb7d/0x10a0 net/ipv6/addrconf.c:4022 process_one_work+0x864/0x1570 kernel/workqueue.c:2153 worker_thread+0x64c/0x1130 kernel/workqueue.c:2296 kthread+0x33f/0x460 kernel/kthread.c:259 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:415 IPv6: ADDRCONF(NETDEV_UP): bond59: link is not ready 8021q: adding VLAN 0 to HW filter on device bond59 netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. ieee80211 phy35: Selected rate control algorithm 'minstrel_ht' ieee80211 phy36: Selected rate control algorithm 'minstrel_ht' IPVS: ftp: loaded support on port[0] = 21 IPv6: ADDRCONF(NETDEV_UP): bond60: link is not ready 8021q: adding VLAN 0 to HW filter on device bond60 ieee80211 phy37: Selected rate control algorithm 'minstrel_ht' netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. ieee80211 phy38: Selected rate control algorithm 'minstrel_ht' IPv6: ADDRCONF(NETDEV_UP): bond61: link is not ready 8021q: adding VLAN 0 to HW filter on device bond61 netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. validate_nla: 5 callbacks suppressed netlink: 'syz-executor.1': attribute type 2 has an invalid length. netlink: 'syz-executor.5': attribute type 1 has an invalid length. IPv6: ADDRCONF(NETDEV_UP): bond6: link is not ready 8021q: adding VLAN 0 to HW filter on device bond6 netlink: 'syz-executor.1': attribute type 2 has an invalid length. netlink: 'syz-executor.4': attribute type 1 has an invalid length. IPVS: ftp: loaded support on port[0] = 21 IPv6: ADDRCONF(NETDEV_UP): bond62: link is not ready netlink: 'syz-executor.1': attribute type 2 has an invalid length. 8021q: adding VLAN 0 to HW filter on device bond62 netlink: 8 bytes leftover after parsing attributes in process `syz-executor.5'. netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. netlink: 'syz-executor.1': attribute type 2 has an invalid length. netlink: 'syz-executor.4': attribute type 1 has an invalid length. IPVS: ftp: loaded support on port[0] = 21 IPv6: ADDRCONF(NETDEV_UP): bond63: link is not ready 8021q: adding VLAN 0 to HW filter on device bond63 netlink: 'syz-executor.5': attribute type 1 has an invalid length. IPv6: ADDRCONF(NETDEV_UP): bond7: link is not ready 8021q: adding VLAN 0 to HW filter on device bond7 netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. netlink: 8 bytes leftover after parsing attributes in process `syz-executor.5'. netlink: 'syz-executor.4': attribute type 1 has an invalid length. netlink: 'syz-executor.1': attribute type 2 has an invalid length. IPVS: ftp: loaded support on port[0] = 21 IPv6: ADDRCONF(NETDEV_UP): bond64: link is not ready 8021q: adding VLAN 0 to HW filter on device bond64 IPv6: ADDRCONF(NETDEV_UP): bond8: link is not ready 8021q: adding VLAN 0 to HW filter on device bond8 netlink: 8 bytes leftover after parsing attributes in process `syz-executor.5'. IPv6: ADDRCONF(NETDEV_UP): bond65: link is not ready 8021q: adding VLAN 0 to HW filter on device bond65 IPv6: ADDRCONF(NETDEV_UP): bond9: link is not ready 8021q: adding VLAN 0 to HW filter on device bond9 IPVS: ftp: loaded support on port[0] = 21 netlink: 8 bytes leftover after parsing attributes in process `syz-executor.5'. IPVS: ftp: loaded support on port[0] = 21 IPv6: ADDRCONF(NETDEV_UP): bond66: link is not ready 8021q: adding VLAN 0 to HW filter on device bond66 IPv6: ADDRCONF(NETDEV_UP): bond10: link is not ready 8021q: adding VLAN 0 to HW filter on device bond10 IPVS: ftp: loaded support on port[0] = 21 IPVS: ftp: loaded support on port[0] = 21 IPv6: ADDRCONF(NETDEV_UP): bond67: link is not ready 8021q: adding VLAN 0 to HW filter on device bond67 IPv6: ADDRCONF(NETDEV_UP): bond68: link is not ready 8021q: adding VLAN 0 to HW filter on device bond68 IPVS: ftp: loaded support on port[0] = 21 IPVS: ftp: loaded support on port[0] = 21 validate_nla: 22 callbacks suppressed netlink: 'syz-executor.1': attribute type 2 has an invalid length. IPv6: ADDRCONF(NETDEV_UP): bond69: link is not ready 8021q: adding VLAN 0 to HW filter on device bond69 IPVS: ftp: loaded support on port[0] = 21 netlink: 'syz-executor.1': attribute type 2 has an invalid length. IPVS: ftp: loaded support on port[0] = 21 IPVS: ftp: loaded support on port[0] = 21 netlink: 'syz-executor.4': attribute type 1 has an invalid length. netlink: 'syz-executor.1': attribute type 2 has an invalid length. IPv6: ADDRCONF(NETDEV_UP): bond70: link is not ready 8021q: adding VLAN 0 to HW filter on device bond70 nla_parse: 1 callbacks suppressed netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. IPVS: ftp: loaded support on port[0] = 21 netlink: 'syz-executor.1': attribute type 2 has an invalid length. EXT4-fs (loop0): mounted filesystem without journal. Opts: ,errors=continue netlink: 'syz-executor.4': attribute type 1 has an invalid length. IPVS: ftp: loaded support on port[0] = 21 netlink: 'syz-executor.1': attribute type 2 has an invalid length. IPv6: ADDRCONF(NETDEV_UP): bond71: link is not ready 8021q: adding VLAN 0 to HW filter on device bond71 netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. netlink: 'syz-executor.1': attribute type 2 has an invalid length. netlink: 'syz-executor.4': attribute type 1 has an invalid length. IPv6: ADDRCONF(NETDEV_UP): bond72: link is not ready 8021q: adding VLAN 0 to HW filter on device bond72 netlink: 8 bytes leftover after parsing attributes in process `syz-executor.4'. IPVS: ftp: loaded support on port[0] = 21 netlink: 'syz-executor.4': attribute type 1 has an invalid length. IPv6: ADDRCONF(NETDEV_UP): bond73: link is not ready 8021q: adding VLAN 0 to HW filter on device bond73 EXT4-fs (loop0): mounted filesystem without journal. Opts: ,errors=continue IPVS: ftp: loaded support on port[0] = 21 EXT4-fs (loop0): mounted filesystem without journal. Opts: ,errors=continue IPv6: ADDRCONF(NETDEV_UP): bond2: link is not ready 8021q: adding VLAN 0 to HW filter on device bond2 IPv6: ADDRCONF(NETDEV_UP): bond74: link is not ready 8021q: adding VLAN 0 to HW filter on device bond74 IPVS: ftp: loaded support on port[0] = 21 IPv6: ADDRCONF(NETDEV_UP): bond75: link is not ready 8021q: adding VLAN 0 to HW filter on device bond75 IPv6: ADDRCONF(NETDEV_UP): bond3: link is not ready 8021q: adding VLAN 0 to HW filter on device bond3 IPVS: ftp: loaded support on port[0] = 21