Skip to content

Commit 0b28000

Browse files
ea1davisrleon
authored andcommitted
RDMA/nldev: Add mutual exclusion in nldev_dellink()
We must serialize calls to nldev_dellink() or risk a crash as syzbot reported: KASAN: null-ptr-deref in range [0x0000000000000020-0x0000000000000027] Call Trace: udp_tunnel_sock_release+0x6d/0x80 net/ipv4/udp_tunnel_core.c:197 rxe_release_udp_tunnel drivers/infiniband/sw/rxe/rxe_net.c:294 [inline] rxe_sock_put drivers/infiniband/sw/rxe/rxe_net.c:639 [inline] rxe_net_del+0xfb/0x290 drivers/infiniband/sw/rxe/rxe_net.c:660 rxe_dellink+0x15/0x20 drivers/infiniband/sw/rxe/rxe.c:254 Fixes: a60e3f3 ("RDMA/nldev: Add dellink function pointer") Reported-by: syzbot+d8f76778263ab65c2b21@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=d8f76778263ab65c2b21 Tested-by: syzbot+d8f76778263ab65c2b21@syzkaller.appspotmail.com Signed-off-by: Edward Adam Davis <eadavis@qq.com> Link: https://patch.msgid.link/tencent_611BEB4B141B1A2526BAA3BBB2335F9E9108@qq.com Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev> Signed-off-by: Leon Romanovsky <leon@kernel.org>
1 parent 5d69190 commit 0b28000

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

drivers/infiniband/core/nldev.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
* a controlled QKEY.
5252
*/
5353
static bool privileged_qkey;
54+
static DEFINE_MUTEX(nldev_dellink_mutex);
5455

5556
typedef int (*res_fill_func_t)(struct sk_buff*, bool,
5657
struct rdma_restrack_entry*, uint32_t);
@@ -1846,7 +1847,9 @@ static int nldev_dellink(struct sk_buff *skb, struct nlmsghdr *nlh,
18461847
* implicitly scoped to the driver supporting dynamic link deletion like RXE.
18471848
*/
18481849
if (device->link_ops && device->link_ops->dellink) {
1850+
mutex_lock(&nldev_dellink_mutex);
18491851
err = device->link_ops->dellink(device);
1852+
mutex_unlock(&nldev_dellink_mutex);
18501853
if (err)
18511854
return err;
18521855
}

0 commit comments

Comments
 (0)