mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
lockd: Translate nlm__int__deadlock in __nlm4svc_proc_lock_msg()
When nlmsvc_lock() detects a deadlock it returns the internal sentinel nlm__int__deadlock (30001), which version-specific handlers must translate to a wire-valid status before the reply is encoded. The xdrgen LOCK_MSG handler stores the sentinel unmodified in resp->status; the LOCK_RES callback then places 30001 on the v4 wire, where the client rejects the reply. Commit9e0d0c6194("lockd: Introduce nlm__int__deadlock") established the translation boundary and updated the synchronous v4 path nlm4svc_do_lock(), but the xdrgen LOCK_MSG handler added later in commitb2be4e28c2("lockd: Use xdrgen XDR functions for the NLMv4 LOCK_MSG procedure") missed the corresponding remap. Apply the same translation in __nlm4svc_proc_lock_msg() so deadlock results are reported as nlm4_deadlock on LOCK_RES. Fixes:b2be4e28c2("lockd: Use xdrgen XDR functions for the NLMv4 LOCK_MSG procedure") Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
6d4c0dfeba
commit
2175ca7588
|
|
@ -668,6 +668,8 @@ __nlm4svc_proc_lock_msg(struct svc_rqst *rqstp, struct nlm_res *resp)
|
|||
resp->status = nlmsvc_lock(rqstp, file, host, &argp->lock,
|
||||
argp->xdrgen.block, &resp->cookie,
|
||||
argp->xdrgen.reclaim);
|
||||
if (resp->status == nlm__int__deadlock)
|
||||
resp->status = nlm4_deadlock;
|
||||
nlmsvc_release_lockowner(&argp->lock);
|
||||
|
||||
out:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user