mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
sunrpc: honor the netlink unix_gid NEGATIVE flag
The unix_gid netlink upcall protocol has an explicit
SUNRPC_A_UNIX_GID_NEGATIVE attribute for failed group lookups, and
mountd sends it, but sunrpc_nl_parse_one_unix_gid() only allocates
an empty group list for a flagged reply without propagating the
flag into the entry, so it installs a valid positive entry with
zero groups. Such an entry strips the uid of all supplementary
groups until it is refreshed or expires: the same defect the
previous patch fixes on the classic channel, on a transport that
can say "lookup failed" explicitly.
Set CACHE_NEGATIVE for flagged replies, as the netlink ip_map
path already does for its negative flag. An empty GIDS list
without the flag remains a positive entry.
Fixes: 0850e8603c ("sunrpc: add netlink upcall for the auth.unix.gid cache")
Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-fable-5
Signed-off-by: Ameer Hamza <ameer.hamza@truenas.com>
Link: https://patch.msgid.link/20260814221953.108837-3-ameer.hamza@truenas.com
Signed-off-by: Chuck Lever <cel@kernel.org>
This commit is contained in:
parent
a12cc09302
commit
7bc856dfaa
|
|
@ -737,6 +737,8 @@ static int sunrpc_nl_parse_one_unix_gid(struct cache_detail *cd,
|
|||
boot.tv_sec;
|
||||
|
||||
if (tb[SUNRPC_A_UNIX_GID_NEGATIVE]) {
|
||||
/* failed lookup: keep the credential's own groups */
|
||||
set_bit(CACHE_NEGATIVE, &ug.h.flags);
|
||||
ug.gi = groups_alloc(0);
|
||||
if (!ug.gi)
|
||||
return -ENOMEM;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user