]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RDMA/counter: Check CAP_NET_RAW check in user namespace for RDMA counters
authorParav Pandit <parav@nvidia.com>
Thu, 26 Jun 2025 18:58:12 +0000 (21:58 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 14:39:03 +0000 (16:39 +0200)
[ Upstream commit 449728196d65fce513dbacf4d3696764be1c6524 ]

Currently, the capability check is done in the default
init_user_ns user namespace. When a process runs in a
non default user namespace, such check fails.

Since the RDMA device is a resource within a network namespace,
use the network namespace associated with the RDMA device to
determine its owning user namespace.

Fixes: 1bd8e0a9d0fd ("RDMA/counter: Allow manual mode configuration support")
Signed-off-by: Parav Pandit <parav@nvidia.com>
Link: https://patch.msgid.link/68e2064e72e94558a576fdbbb987681a64f6fea8.1750963874.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/core/counters.c

index e6ec7b7a40afa4f646477308cdabf38925d61890..c3aa6d7fc66b6eb416d3f4c36644b1479bf2b9b1 100644 (file)
@@ -461,7 +461,7 @@ static struct ib_qp *rdma_counter_get_qp(struct ib_device *dev, u32 qp_num)
                return NULL;
 
        qp = container_of(res, struct ib_qp, res);
-       if (qp->qp_type == IB_QPT_RAW_PACKET && !capable(CAP_NET_RAW))
+       if (qp->qp_type == IB_QPT_RAW_PACKET && !rdma_dev_has_raw_cap(dev))
                goto err;
 
        return qp;