]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
RDMA/mlx4: Fix mis-use of RCU in mlx4_srq_event()
authorJason Gunthorpe <jgg@nvidia.com>
Tue, 28 Apr 2026 16:17:45 +0000 (13:17 -0300)
committerJason Gunthorpe <jgg@nvidia.com>
Sat, 2 May 2026 18:30:48 +0000 (15:30 -0300)
commitc9341307ea16b9395c2e4c9c94d8499d91fe31d0
treec121d48c772dd168369977d8f587eb33ec2c6ff9
parentc54c7e4cb679c0aaa1cb489b9c3f2cd98e63a44c
RDMA/mlx4: Fix mis-use of RCU in mlx4_srq_event()

Sashiko points out the radix_tree itself is RCU safe, but nothing ever
frees the mlx4_srq struct with RCU, and it isn't even accessed within the
RCU critical section. It also will crash if an event is delivered before
the srq object is finished initializing.

Use the spinlock since it isn't easy to make RCU work, use
refcount_inc_not_zero() to protect against partially initialized objects,
and order the refcount_set() to be after the srq is fully initialized.

Cc: stable@vger.kernel.org
Fixes: 30353bfc43a1 ("net/mlx4_core: Use RCU to perform radix tree lookup for SRQ")
Link: https://sashiko.dev/#/patchset/0-v2-1c49eeb88c48%2B91-rdma_udata_rep_jgg%40nvidia.com?part=5
Link: https://patch.msgid.link/r/12-v1-41f3135e5565+9d2-rdma_ai_fixes1_jgg@nvidia.com
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/net/ethernet/mellanox/mlx4/srq.c