]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/uverbs: Check CAP_NET_RAW in user namespace for RAW QP create
authorParav Pandit <parav@nvidia.com>
Thu, 26 Jun 2025 18:58:08 +0000 (21:58 +0300)
committerLeon Romanovsky <leon@kernel.org>
Tue, 1 Jul 2025 09:21:44 +0000 (05:21 -0400)
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: 6d1e7ba241e9 ("IB/uverbs: Introduce create/destroy QP commands over ioctl")
Signed-off-by: Parav Pandit <parav@nvidia.com>
Link: https://patch.msgid.link/7b6b87505ccc28a1f7b4255af94d898d2df0fff5.1750963874.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/core/uverbs_std_types_qp.c

index 7b4773fa4bc0bda36693465422ceac28b735116f..be0730e8509ed90b7de53c162f6618a620a11edd 100644 (file)
@@ -133,7 +133,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_QP_CREATE)(
                device = xrcd->device;
                break;
        case IB_UVERBS_QPT_RAW_PACKET:
-               if (!capable(CAP_NET_RAW))
+               if (!rdma_uattrs_has_raw_cap(attrs))
                        return -EPERM;
                fallthrough;
        case IB_UVERBS_QPT_RC: