diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-08-23 19:00:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-08-23 19:00:10 -0400 |
commit | 9157141c95bc3ffcdae93fde5d5aafee7ce6e39a (patch) | |
tree | d19dd16a9caeec931fabfb31213aac9dda68af6d /net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | |
parent | 6f7948f566bf423ddf5ff58dc0198afcf37c0b64 (diff) | |
parent | 108b833cde9c9b93204e6a4e455829a67f9785c3 (diff) |
Merge tag 'nfsd-4.19-1' of git://linux-nfs.org/~bfields/linux
Pull nfsd updates from Bruce Fields:
"Chuck Lever fixed a problem with NFSv4.0 callbacks over GSS from
multi-homed servers.
The only new feature is a minor bit of protocol (change_attr_type)
which the client doesn't even use yet.
Other than that, various bugfixes and cleanup"
* tag 'nfsd-4.19-1' of git://linux-nfs.org/~bfields/linux: (27 commits)
sunrpc: Add comment defining gssd upcall API keywords
nfsd: Remove callback_cred
nfsd: Use correct credential for NFSv4.0 callback with GSS
sunrpc: Extract target name into svc_cred
sunrpc: Enable the kernel to specify the hostname part of service principals
sunrpc: Don't use stack buffer with scatterlist
rpc: remove unneeded variable 'ret' in rdma_listen_handler
nfsd: use true and false for boolean values
nfsd: constify write_op[]
fs/nfsd: Delete invalid assignment statements in nfsd4_decode_exchange_id
NFSD: Handle full-length symlinks
NFSD: Refactor the generic write vector fill helper
svcrdma: Clean up Read chunk path
svcrdma: Avoid releasing a page in svc_xprt_release()
nfsd: Mark expected switch fall-through
sunrpc: remove redundant variables 'checksumlen','blocksize' and 'data'
nfsd: fix leaked file lock with nfs exported overlayfs
nfsd: don't advertise a SCSI layout for an unsupported request_queue
nfsd: fix corrupted reply to badly ordered compound
nfsd: clarify check_op_ordering
...
Diffstat (limited to 'net/sunrpc/xprtrdma/svc_rdma_recvfrom.c')
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c index 2ef75e885411..b24d5b8f2fee 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | |||
@@ -365,9 +365,6 @@ static void svc_rdma_build_arg_xdr(struct svc_rqst *rqstp, | |||
365 | arg->page_base = 0; | 365 | arg->page_base = 0; |
366 | arg->buflen = ctxt->rc_byte_len; | 366 | arg->buflen = ctxt->rc_byte_len; |
367 | arg->len = ctxt->rc_byte_len; | 367 | arg->len = ctxt->rc_byte_len; |
368 | |||
369 | rqstp->rq_respages = &rqstp->rq_pages[0]; | ||
370 | rqstp->rq_next_page = rqstp->rq_respages + 1; | ||
371 | } | 368 | } |
372 | 369 | ||
373 | /* This accommodates the largest possible Write chunk, | 370 | /* This accommodates the largest possible Write chunk, |
@@ -729,6 +726,12 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp) | |||
729 | 726 | ||
730 | svc_rdma_build_arg_xdr(rqstp, ctxt); | 727 | svc_rdma_build_arg_xdr(rqstp, ctxt); |
731 | 728 | ||
729 | /* Prevent svc_xprt_release from releasing pages in rq_pages | ||
730 | * if we return 0 or an error. | ||
731 | */ | ||
732 | rqstp->rq_respages = rqstp->rq_pages; | ||
733 | rqstp->rq_next_page = rqstp->rq_respages; | ||
734 | |||
732 | p = (__be32 *)rqstp->rq_arg.head[0].iov_base; | 735 | p = (__be32 *)rqstp->rq_arg.head[0].iov_base; |
733 | ret = svc_rdma_xdr_decode_req(&rqstp->rq_arg); | 736 | ret = svc_rdma_xdr_decode_req(&rqstp->rq_arg); |
734 | if (ret < 0) | 737 | if (ret < 0) |