[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <c1f9511c-7ad0-444d-aa0c-516674702b4e@I-love.SAKURA.ne.jp>
Date: Tue, 20 Jan 2026 18:58:58 +0900
From: Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>
To: Huy Nguyen <huyn@...lanox.com>, Parav Pandit <parav@...lanox.com>,
Jason Gunthorpe <jgg@...pe.ca>, Leon Romanovsky <leon@...nel.org>,
Maher Sanalla <msanalla@...dia.com>, Maor Gottlieb <maorg@...dia.com>
Cc: OFED mailing list <linux-rdma@...r.kernel.org>,
LKML <linux-kernel@...r.kernel.org>
Subject: [rdma bug] del_default_gids() is not called upon NETDEV_UNREGISTER
event
Hello.
syzbot found in linux-next-20260116 that one of causes that appear as
unregister_netdevice: waiting for bond1 to become free. Usage count = 2
problem ( https://syzkaller.appspot.com/bug?extid=881d65229ca4f9ae8c84 ) is that
a refcount for "struct ib_gid_table_entry" is leaking because del_default_gids()
is not called upon NETDEV_UNREGISTER event; a debug printk() patch revealed that
only add_default_gids() was called.
Since "struct ib_gid_table_entry" takes a reference to "struct net_device" via
"struct roce_gid_ndev_storage", the corresponding NETDEV_UNREGISTER handler
must release that reference. Something was overlooked when writing commit
943bd984b108 ("RDMA/core: Allow detaching gid attribute netdevice for RoCE") ?
unregister_netdevice: waiting for bond1 to become free. Usage count = 2
Call trace for bond1@...f888043434a00 +1 at
alloc_gid_entry drivers/infiniband/core/cache.c:417 [inline]
add_modify_gid+0x317/0xcc0 drivers/infiniband/core/cache.c:557
__ib_cache_gid_add+0x230/0x370 drivers/infiniband/core/cache.c:688
ib_cache_gid_set_default_gid+0x5f9/0x710 drivers/infiniband/core/cache.c:967
add_default_gids drivers/infiniband/core/roce_gid_mgmt.c:492 [inline]
enum_all_gids_of_dev_cb+0x17d/0x270 drivers/infiniband/core/roce_gid_mgmt.c:518
ib_enum_roce_netdev+0x1ab/0x2e0 drivers/infiniband/core/device.c:2434
gid_table_setup_one drivers/infiniband/core/cache.c:1040 [inline]
ib_cache_setup_one+0x428/0x5e0 drivers/infiniband/core/cache.c:1719
ib_register_device+0xfbe/0x1420 drivers/infiniband/core/device.c:1450
rxe_register_device+0x1e3/0x350 drivers/infiniband/sw/rxe/rxe_verbs.c:1556
rxe_net_add+0x81/0x110 drivers/infiniband/sw/rxe/rxe_net.c:618
rxe_newlink+0xdd/0x190 drivers/infiniband/sw/rxe/rxe.c:234
nldev_newlink+0x4a5/0x5a0 drivers/infiniband/core/nldev.c:1797
rdma_nl_rcv_msg drivers/infiniband/core/netlink.c:-1 [inline]
rdma_nl_rcv_skb drivers/infiniband/core/netlink.c:239 [inline]
rdma_nl_rcv+0x6ae/0x980 drivers/infiniband/core/netlink.c:259
netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline]
netlink_unicast+0x82f/0x9e0 net/netlink/af_netlink.c:1344
netlink_sendmsg+0x805/0xb30 net/netlink/af_netlink.c:1894
sock_sendmsg_nosec+0x18f/0x1d0 net/socket.c:737
Call trace for bond1@...f888043434a00 +1 at
get_gid_entry drivers/infiniband/core/cache.c:442 [inline]
rdma_get_gid_attr+0x2ee/0x3f0 drivers/infiniband/core/cache.c:1307
smc_ib_fill_mac net/smc/smc_ib.c:160 [inline]
smc_ib_remember_port_attr net/smc/smc_ib.c:369 [inline]
smc_ib_port_event_work+0x196/0x940 net/smc/smc_ib.c:388
process_one_work+0x93a/0x15a0 kernel/workqueue.c:3279
Call trace for bond1@...f888043434a00 -1 at
put_gid_entry drivers/infiniband/core/cache.c:448 [inline]
rdma_put_gid_attr+0x7c/0x130 drivers/infiniband/core/cache.c:1388
smc_ib_fill_mac net/smc/smc_ib.c:165 [inline]
smc_ib_remember_port_attr net/smc/smc_ib.c:369 [inline]
smc_ib_port_event_work+0x1d4/0x940 net/smc/smc_ib.c:388
process_one_work+0x93a/0x15a0 kernel/workqueue.c:3279
Call trace for bond1@...f888043434a00 +1 !NETREG_REGISTERED at
get_gid_entry drivers/infiniband/core/cache.c:442 [inline]
rdma_get_gid_attr+0x2ee/0x3f0 drivers/infiniband/core/cache.c:1307
smc_ib_fill_mac net/smc/smc_ib.c:160 [inline]
smc_ib_remember_port_attr net/smc/smc_ib.c:369 [inline]
smc_ib_port_event_work+0x196/0x940 net/smc/smc_ib.c:388
process_one_work+0x93a/0x15a0 kernel/workqueue.c:3279
Call trace for bond1@...f888043434a00 -1 !NETREG_REGISTERED at
put_gid_entry drivers/infiniband/core/cache.c:448 [inline]
rdma_put_gid_attr+0x7c/0x130 drivers/infiniband/core/cache.c:1388
smc_ib_fill_mac net/smc/smc_ib.c:165 [inline]
smc_ib_remember_port_attr net/smc/smc_ib.c:369 [inline]
smc_ib_port_event_work+0x1d4/0x940 net/smc/smc_ib.c:388
process_one_work+0x93a/0x15a0 kernel/workqueue.c:3279
infiniband: balance for bond1@...gid_table_entry is 1
Powered by blists - more mailing lists