[PATCH rdma-next 00/13] RDMA: Make device names unique per net namespace
From: Jiri Pirko <jiri@resnulli.us>
Date: 2026-07-09 09:55:37
Also in:
cgroups, linux-kselftest, linux-rdma, linux-s390
From: Jiri Pirko <redacted>
RDMA device names are unique system-wide today:
__ib_device_get_by_name() checks a requested name against every
registered device regardless of the network namespace it lives in.
A device in one network namespace therefore cannot use a name already
taken in another, even in exclusive netns mode (netns_mode=0) where
the two are otherwise isolated. Net devices have no such restriction -
their names only need to be unique within a network namespace.
This series makes RDMA device names unique per network namespace,
matching net device semantics, and adapts the users that assumed
system-wide unique names.
Scoping reuses the existing rdma_dev_access_netns() predicate, so
behavior only changes in exclusive mode:
- shared mode (default): names stay unique system-wide, no change;
- exclusive mode: names only need to be unique within a namespace;
- CONFIG_NET_NS=n: everything is init_net, names stay system-wide
unique.
There are two users that cannot be made per-namespace and are
documented as known limitations instead of changed:
- the rdma_cm configfs tree: configfs has no network namespace
support, so it cannot represent two same-named devices;
- SELinux ibendport labelling: endports are labelled by (device
name, port) from a global policy; distinguishing same-named
devices would need net namespace support in the SELinux policy
language and tooling.
Tested with the new rxe_netns_names kselftest added in the last patch.
Jiri Pirko (13):
RDMA/core: Pass the net namespace to the device name lookups
RDMA/core: Handle device name conflicts when changing net namespace
RDMA/core: Support renaming a device when changing its net namespace
RDMA/nldev: Report net namespace move errors through extack
RDMA/nldev: Allow setting the device name while changing net namespace
net/smc: Look up the pnetid ib device within the net namespace
RDMA/srp: Make the SRP sysfs class net namespace aware
RDMA/cgroup: Scope rdma cgroup device visibility to the net namespace
RDMA/cma: Document that CM configfs cannot be net namespace scoped
RDMA/core: Document the SELinux ibendport net namespace limitation
RDMA/core: Make device names unique per net namespace
RDMA/rxe: Implement disassociate_ucontext callback
RDMA/selftests: Add rxe_netns_names test
Documentation/ABI/testing/configfs-rdma_cm | 4 +
Documentation/admin-guide/cgroup-v2.rst | 7 +
drivers/infiniband/core/cgroup.c | 12 +
drivers/infiniband/core/cma_configfs.c | 4 +
drivers/infiniband/core/core_priv.h | 15 +-
drivers/infiniband/core/device.c | 256 +++++++++++++---
drivers/infiniband/core/nldev.c | 26 +-
drivers/infiniband/core/security.c | 6 +
drivers/infiniband/sw/rxe/rxe_verbs.c | 5 +
drivers/infiniband/ulp/srp/ib_srp.c | 16 +-
include/linux/cgroup_rdma.h | 10 +
include/uapi/rdma/rdma_netlink.h | 5 +-
kernel/cgroup/rdma.c | 20 +-
net/smc/smc_pnet.c | 20 +-
tools/testing/selftests/rdma/Makefile | 3 +-
tools/testing/selftests/rdma/config | 2 +
.../testing/selftests/rdma/rxe_netns_names.sh | 282 ++++++++++++++++++
17 files changed, 639 insertions(+), 54 deletions(-)
create mode 100755 tools/testing/selftests/rdma/rxe_netns_names.sh
--
2.54.0