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.
This commit is contained in:
Daan De Meyer
2026-02-19 21:33:11 +01:00
parent d28c96d85e
commit 0dbdbed03f
+6
View File
@@ -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;