nfsd: never defer requests during idmap lookup
ANBZ: #36270
commit b9abb760db20504240a7147f27934d900cd80b23 stable.
commit f9c206cdc4266caad6a9a7f46341420a10f03ccb upstream.
During v4 request compound arg decoding, some ops (e.g. SETATTR) can trigger idmap lookup upcalls. When those upcall responses get delayed beyond the allowed time limit, cache_check() will mark the request for deferral and cause it to be dropped.
This prevents nfs4svc_encode_compoundres from being executed, and thus the session slot flag NFSD4_SLOT_INUSE never gets cleared. Subsequent client requests will fail with NFSERR_JUKEBOX, given that the slot will be marked as in-use, making the SEQUENCE op fail.
Fix this by making sure that the RQ_USEDEFERRAL flag is always clear during nfs4svc_decode_compoundargs(), since no v4 request should ever be deferred.
Fixes: 2f425878b6a7 (“nfsd: don’t use the deferral service, return NFS4ERR_DELAY”) 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
[ Fix conflicts by still return !nfsd4_decode_compound() ] Fixes: CVE-2026-45983 Assisted-by: PatchPilot patchpilot@openanolis.org Signed-off-by: Joseph Qi joseph.qi@linux.alibaba.com Link: https://gitee.com/anolis/cloud-kernel/pulls/10883
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
Linux kernel
There are several guides for kernel developers and users. These guides can be rendered in a number of formats, like HTML and PDF. Please read Documentation/admin-guide/README.rst first.
In order to build the documentation, use
make htmldocsormake pdfdocs. The formatted documentation can also be read online at:There are various text files in the Documentation/ subdirectory, several of them using the Restructured Text markup notation.
Please read the Documentation/process/changes.rst file, as it contains the requirements for building and running the kernel, and information about the problems which may result by upgrading your kernel.