From 0dbdbed03f970e8be13e5667621c7d91fa972984 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Wed, 18 Feb 2026 19:30:12 +0100 Subject: [PATCH] uid-range: Handle same userns in uid_range_load_userns_by_fd() If we're asked to look up our own user namespace mapping, don't go via fd as trying to setns() to our own user namespace in userns_enter_and_pin() would fail with EPERM as the kernel doesn't allow switching to your own userns. --- src/basic/uid-range.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/basic/uid-range.c b/src/basic/uid-range.c index c498b5afe1f..1aaf760468b 100644 --- a/src/basic/uid-range.c +++ b/src/basic/uid-range.c @@ -295,6 +295,12 @@ int uid_range_load_userns_by_fd(int userns_fd, UIDRangeUsernsMode mode, UIDRange assert(mode < _UID_RANGE_USERNS_MODE_MAX); assert(ret); + r = is_our_namespace(userns_fd, NAMESPACE_USER); + if (r < 0) + return r; + if (r > 0) + return uid_range_load_userns(/* path= */ NULL, mode, ret); + r = userns_enter_and_pin(userns_fd, &pidref); if (r < 0) return r; -- 2.47.3