linux/fs/nfsd
Anthony Iliopoulos 982815bb04 nfsd: fix return error code for nfsd_map_name_to_[ug]id
[ Upstream commit 404d779466 ]

idmap lookups can time out while the cache is waiting for a userspace
upcall reply. In that case cache_check() returns -ETIMEDOUT to callers.

The nfsd_map_name_to_[ug]id functions currently proceed with attempting
to map the id to a kuid despite a potentially temporary failure to
perform the idmap lookup. This results in the code returning the error
NFSERR_BADOWNER which can cause client operations to return to userspace
with failure.

Fix this by returning the failure status before attempting kuid mapping.

This will return NFSERR_JUKEBOX on idmap lookup timeout so that clients
can retry the operation instead of aborting it.

Fixes: 65e10f6d0a ("nfsd: Convert idmap to use kuids and kgids")
Cc: stable@vger.kernel.org
Signed-off-by: Anthony Iliopoulos <ailiop@suse.com>
Reviewed-by: NeilBrown <neil@brown.name>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-03-04 07:21:49 -05:00
..
acl.h NFSD: add posix ACLs to struct nfsd_attrs 2022-08-04 10:28:03 -04:00
auth.c nfsd: Pass 'cred' instead of 'rqstp' to some functions. 2024-09-20 19:31:03 -04:00
auth.h nfsd: Pass 'cred' instead of 'rqstp' to some functions. 2024-09-20 19:31:03 -04:00
blocklayout.c NFSD: use correct reservation type in nfsd4_scsi_fence_client 2026-01-08 10:14:19 +01:00
blocklayoutxdr.c NFSD: Implement large extent array support in pNFS 2025-10-23 16:20:41 +02:00
blocklayoutxdr.h NFSD: Implement large extent array support in pNFS 2025-10-23 16:20:41 +02:00
cache.h nfsd: don't allocate the versions array. 2024-09-20 19:29:23 -04:00
current_stateid.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
export.c nfsd: Mark variable __maybe_unused to avoid W=1 build break 2026-01-08 10:14:24 +01:00
export.h nfsd: decouple the xprtsec policy check from check_nfsd_access() 2025-10-19 16:34:07 +02:00
filecache.c nfsd: rename nfsd_serv_ prefixed methods and variables with nfsd_net_ 2026-01-08 10:14:09 +01:00
filecache.h nfs_common: must not hold RCU while calling nfsd_file_put_local 2024-12-05 14:02:27 +01:00
flexfilelayout.c NFSD: Define a proc_layoutcommit for the FlexFiles layout type 2025-10-23 16:20:47 +02:00
flexfilelayoutxdr.c NFSD: Rework encoding and decoding of nfsd4_deviceid 2025-10-23 16:20:40 +02:00
flexfilelayoutxdr.h NFSD: Make @gdev parameter of ->encode_getdeviceinfo a const pointer 2023-10-16 12:44:29 -04:00
idmap.h nfsd: Remove duplicate define of IDMAP_NAMESZ/IDMAP_TYPE_xx 2015-07-20 14:58:46 -04:00
Kconfig nfs: add missing selections of CONFIG_CRC32 2025-04-25 10:47:50 +02:00
localio.c nfsd: rename nfsd_serv_ prefixed methods and variables with nfsd_net_ 2026-01-08 10:14:09 +01:00
lockd.c nfsd: refine and rename NFSD_MAY_LOCK 2025-10-19 16:34:03 +02:00
Makefile nfsd: add LOCALIO support 2024-09-23 15:03:30 -04:00
netlink.c nfsd: new netlink ops to get/set server pool_mode 2024-07-08 14:10:05 -04:00
netlink.h nfsd: new netlink ops to get/set server pool_mode 2024-07-08 14:10:05 -04:00
netns.h nfsd: provide locking for v4_end_grace 2026-01-17 16:31:15 +01:00
nfs2acl.c NFS: NFSERR_INVAL is not defined by NFSv2 2026-03-04 07:20:05 -05:00
nfs3acl.c nfsd: clear acl_access/acl_default after releasing them 2025-02-21 14:01:13 +01:00
nfs3proc.c nfsd: move error choice for incorrect object types to version-specific code. 2024-09-20 19:31:03 -04:00
nfs3xdr.c nfsd: Fix NFSv3 atomicity bugs in nfsd_setattr() 2024-03-01 09:12:33 -05:00
nfs4acl.c nfsd: inherit required unset default acls from effective set 2023-08-29 17:45:22 -04:00
nfs4callback.c NFSD: Fix CB_GETATTR status fix 2025-04-20 10:16:01 +02:00
nfs4idmap.c nfsd: fix return error code for nfsd_map_name_to_[ug]id 2026-03-04 07:21:49 -05:00
nfs4layouts.c NFSD: Rework encoding and decoding of nfsd4_deviceid 2025-10-23 16:20:40 +02:00
nfs4proc.c nfsd: never defer requests during idmap lookup 2026-03-04 07:20:05 -05:00
nfs4recover.c nfsd: fix legacy client tracking initialization 2025-04-07 10:08:35 +02:00
nfs4state.c nfsd: check that server is running in unlock_filesystem 2026-01-17 16:31:15 +01:00
nfs4xdr.c nfsd: never defer requests during idmap lookup 2026-03-04 07:20:05 -05:00
nfscache.c nfsd: Simplify the allocation of slab caches in nfsd_drc_slab_create 2024-03-01 09:12:24 -05:00
nfsctl.c nfsd: check that server is running in unlock_filesystem 2026-01-17 16:31:15 +01:00
nfsd.h NFSD: Remove NFSERR_EAGAIN 2026-01-17 16:31:15 +01:00
nfsfh.c nfsd: fix refcount leak in nfsd_set_fh_dentry() 2025-11-24 10:35:59 +01:00
nfsfh.h nfs: add missing selections of CONFIG_CRC32 2025-04-25 10:47:50 +02:00
nfsproc.c NFS: NFSERR_INVAL is not defined by NFSv2 2026-03-04 07:20:05 -05:00
nfssvc.c NFSD: net ref data still needs to be freed even if net hasn't startup 2026-01-17 16:31:15 +01:00
nfsxdr.c NFSD: Ensure that xdr_write_pages updates rq_next_page 2023-06-05 09:01:44 -04:00
pnfs.h NFSD: Implement large extent array support in pNFS 2025-10-23 16:20:41 +02:00
state.h nfsd: check that server is running in unlock_filesystem 2026-01-17 16:31:15 +01:00
stats.c nfsd: don't ignore the return code of svc_proc_register() 2025-04-20 10:16:01 +02:00
stats.h nfsd: don't ignore the return code of svc_proc_register() 2025-04-20 10:16:01 +02:00
trace.c NFSD: Add SPDX header for fs/nfsd/trace.c 2020-11-30 13:00:24 -05:00
trace.h nfsd: refine and rename NFSD_MAY_LOCK 2025-10-19 16:34:03 +02:00
vfs.c NFSD: Fix permission check for read access to executable-only files 2026-01-17 16:31:14 +01:00
vfs.h NFSD: NFSv4 file creation neglects setting ACL 2026-01-08 10:14:24 +01:00
xdr.h NFSD: prevent underflow in nfssvc_decode_writeargs() 2022-03-15 09:35:56 -04:00
xdr3.h nfsd: Fix NFSv3 atomicity bugs in nfsd_setattr() 2024-03-01 09:12:33 -05:00
xdr4.h NFSD: Implement large extent array support in pNFS 2025-10-23 16:20:41 +02:00
xdr4cb.h NFSD: add support for CB_GETATTR callback 2024-03-01 09:12:31 -05:00