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

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 devx object.

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: a8b92ca1b0e5 ("IB/mlx5: Introduce DEVX")
Signed-off-by: Parav Pandit <parav@nvidia.com>
Link: https://patch.msgid.link/36ee87e92defd81410c6a2b33f9d6c0d6dcfd64c.1750963874.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/mlx5/devx.c

index 843dcd3122424d4468db0d60bd11d10ab2d8c604..c369fee3356216e0fec8b02c4d932f426fda0dce 100644 (file)
@@ -159,7 +159,7 @@ int mlx5_ib_devx_create(struct mlx5_ib_dev *dev, bool is_user, u64 req_ucaps)
        uctx = MLX5_ADDR_OF(create_uctx_in, in, uctx);
        if (is_user &&
            (MLX5_CAP_GEN(dev->mdev, uctx_cap) & MLX5_UCTX_CAP_RAW_TX) &&
-           capable(CAP_NET_RAW))
+           rdma_dev_has_raw_cap(&dev->ib_dev))
                cap |= MLX5_UCTX_CAP_RAW_TX;
        if (is_user &&
            (MLX5_CAP_GEN(dev->mdev, uctx_cap) &