Re: [syzbot] [rdma] general protection fault in kernel_sock_shutdown (4)
From: Zhu Yanjun
Date: Sat May 16 2026 - 14:47:20 EST
diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c
index 3cb3cb7629fe..96c745d5bac4 100644
--- a/drivers/infiniband/core/nldev.c
+++ b/drivers/infiniband/core/nldev.c
@@ -1816,8 +1816,6 @@ static int nldev_newlink(struct sk_buff *skb, struct nlmsghdr *nlh,
return err;
}
-static DEFINE_MUTEX(nldev_dellink_mutex);
-
static int nldev_dellink(struct sk_buff *skb, struct nlmsghdr *nlh,
struct netlink_ext_ack *extack)
{
@@ -1848,9 +1846,7 @@ static int nldev_dellink(struct sk_buff *skb, struct nlmsghdr *nlh,
* implicitly scoped to the driver supporting dynamic link deletion like RXE.
*/
if (device->link_ops && device->link_ops->dellink) {
- mutex_lock(&nldev_dellink_mutex);
err = device->link_ops->dellink(device);
- mutex_unlock(&nldev_dellink_mutex);
if (err)
return err;
}
diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
index 50a2cb5405e2..92847e955ca2 100644
--- a/drivers/infiniband/sw/rxe/rxe_net.c
+++ b/drivers/infiniband/sw/rxe/rxe_net.c
@@ -642,6 +642,8 @@ static void rxe_sock_put(struct sock *sk,
}
}
+static DEFINE_MUTEX(rxe_net_del_mutex);
+
void rxe_net_del(struct ib_device *dev)
{
struct rxe_dev *rxe = container_of(dev, struct rxe_dev, ib_dev);
@@ -649,9 +651,10 @@ void rxe_net_del(struct ib_device *dev)
struct sock *sk;
struct net *net;
+ mutex_lock(&rxe_net_del_mutex);
ndev = rxe_ib_device_get_netdev(&rxe->ib_dev);
if (!ndev)
- return;
+ goto out;
net = dev_net(ndev);
@@ -664,6 +667,8 @@ void rxe_net_del(struct ib_device *dev)
rxe_sock_put(sk, rxe_ns_pernet_set_sk6, net);
dev_put(ndev);
+out:
+ mutex_unlock(&rxe_net_del_mutex);
}
static void rxe_port_event(struct rxe_dev *rxe,