Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

RDMA/uverbs: Check CAP_NET_RAW in user namespace for RAW QP create

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>

authored by

Parav Pandit and committed by
Leon Romanovsky
a6dca091 0498c2d9

+1 -1
+1 -1
drivers/infiniband/core/uverbs_std_types_qp.c
··· 133 133 device = xrcd->device; 134 134 break; 135 135 case IB_UVERBS_QPT_RAW_PACKET: 136 - if (!capable(CAP_NET_RAW)) 136 + if (!rdma_uattrs_has_raw_cap(attrs)) 137 137 return -EPERM; 138 138 fallthrough; 139 139 case IB_UVERBS_QPT_RC: