summaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4xdr.c
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2021-10-13 10:40:59 -0400
committerJ. Bruce Fields <bfields@redhat.com>2021-10-13 11:34:49 -0400
commit3b0ebb255fdc49a3d340846deebf045ef58ec744 (patch)
tree6516f5921001ead9859afc79f4eab8fbb7b61595 /fs/nfsd/nfs4xdr.c
parentc44b31c263798ec34614dd394c31ef1a2e7e716e (diff)
downloadlinux-stable-3b0ebb255fdc49a3d340846deebf045ef58ec744.tar.gz
linux-stable-3b0ebb255fdc49a3d340846deebf045ef58ec744.tar.bz2
linux-stable-3b0ebb255fdc49a3d340846deebf045ef58ec744.zip
NFSD: Save location of NFSv4 COMPOUND status
Refactor: Currently nfs4svc_encode_compoundres() relies on the NFS dispatcher to pass in the buffer location of the COMPOUND status. Instead, save that buffer location in struct nfsd4_compoundres. The compound tag follows immediately after. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r--fs/nfsd/nfs4xdr.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index dd1ee9ada7dd..c6623080ad98 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -5435,11 +5435,16 @@ nfs4svc_encode_compoundres(struct svc_rqst *rqstp, __be32 *p)
WARN_ON_ONCE(buf->len != buf->head[0].iov_len + buf->page_len +
buf->tail[0].iov_len);
- *p = resp->cstate.status;
+ /*
+ * Send buffer space for the following items is reserved
+ * at the top of nfsd4_proc_compound().
+ */
+ p = resp->statusp;
+
+ *p++ = resp->cstate.status;
rqstp->rq_next_page = resp->xdr->page_ptr + 1;
- p = resp->tagp;
*p++ = htonl(resp->taglen);
memcpy(p, resp->tag, resp->taglen);
p += XDR_QUADLEN(resp->taglen);