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

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. Due to this
when a process is running using Podman, it fails to create
the QP.

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: 2dee0e545894 ("IB/uverbs: Enable QP creation with a given source QP number")
Signed-off-by: Parav Pandit <parav@nvidia.com>
Link: https://patch.msgid.link/0e5920d1dfe836817bb07576b192da41b637130b.1750963874.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/core/uverbs_cmd.c

index 6700c2c66167035f9e836459c500ce36195b39f0..4d96e4a678f351e25eef115134c9c5a7972ebc9c 100644 (file)
@@ -1451,7 +1451,7 @@ static int create_qp(struct uverbs_attr_bundle *attrs,
        }
 
        if (attr.create_flags & IB_QP_CREATE_SOURCE_QPN) {
-               if (!capable(CAP_NET_RAW)) {
+               if (!rdma_uattrs_has_raw_cap(attrs)) {
                        ret = -EPERM;
                        goto err_put;
                }