summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/svcsock.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-09-12 01:01:44 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-09-12 01:01:44 -0400
commit8e7757d83d07cc77ee2661e9615a2f9f4ce540cd (patch)
treeb6c15efae2c117e7fbbe56ad0aaa2859d1cd35a8 /net/sunrpc/svcsock.c
parentdd198ce7141aa8dd9ffcc9549de422fb055508de (diff)
parent1bd5d6d08ea7ed0794c8a3908383d6d6fc202cdd (diff)
Merge tag 'nfs-for-4.14-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client updates from Trond Myklebust: "Hightlights include: Stable bugfixes: - Fix mirror allocation in the writeback code to avoid a use after free - Fix the O_DSYNC writes to use the correct byte range - Fix 2 use after free issues in the I/O code Features: - Writeback fixes to split up the inode->i_lock in order to reduce contention - RPC client receive fixes to reduce the amount of time the xprt->transport_lock is held when receiving data from a socket into am XDR buffer. - Ditto fixes to reduce contention between call side users of the rdma rb_lock, and its use in rpcrdma_reply_handler. - Re-arrange rdma stats to reduce false cacheline sharing. - Various rdma cleanups and optimisations. - Refactor the NFSv4.1 exchange id code and clean up the code. - Const-ify all instances of struct rpc_xprt_ops Bugfixes: - Fix the NFSv2 'sec=' mount option. - NFSv4.1: don't use machine credentials for CLOSE when using 'sec=sys' - Fix the NFSv3 GRANT callback when the port changes on the server. - Fix livelock issues with COMMIT - NFSv4: Use correct inode in _nfs4_opendata_to_nfs4_state() when doing and NFSv4.1 open by filehandle" * tag 'nfs-for-4.14-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (69 commits) NFS: Count the bytes of skipped subrequests in nfs_lock_and_join_requests() NFS: Don't hold the group lock when calling nfs_release_request() NFS: Remove pnfs_generic_transfer_commit_list() NFS: nfs_lock_and_join_requests and nfs_scan_commit_list can deadlock NFS: Fix 2 use after free issues in the I/O code NFS: Sync the correct byte range during synchronous writes lockd: Delete an error message for a failed memory allocation in reclaimer() NFS: remove jiffies field from access cache NFS: flush data when locking a file to ensure cache coherence for mmap. SUNRPC: remove some dead code. NFS: don't expect errors from mempool_alloc(). xprtrdma: Use xprt_pin_rqst in rpcrdma_reply_handler xprtrdma: Re-arrange struct rx_stats NFS: Fix NFSv2 security settings NFSv4.1: don't use machine credentials for CLOSE when using 'sec=sys' SUNRPC: ECONNREFUSED should cause a rebind. NFS: Remove unused parameter gfp_flags from nfs_pageio_init() NFSv4: Fix up mirror allocation SUNRPC: Add a separate spinlock to protect the RPC request receive list SUNRPC: Cleanup xs_tcp_read_common() ...
Diffstat (limited to 'net/sunrpc/svcsock.c')
-rw-r--r--net/sunrpc/svcsock.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 399fab5d1936..ff8e06cd067e 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -1013,7 +1013,7 @@ static int receive_cb_reply(struct svc_sock *svsk, struct svc_rqst *rqstp)
1013 1013
1014 if (!bc_xprt) 1014 if (!bc_xprt)
1015 return -EAGAIN; 1015 return -EAGAIN;
1016 spin_lock_bh(&bc_xprt->transport_lock); 1016 spin_lock(&bc_xprt->recv_lock);
1017 req = xprt_lookup_rqst(bc_xprt, xid); 1017 req = xprt_lookup_rqst(bc_xprt, xid);
1018 if (!req) 1018 if (!req)
1019 goto unlock_notfound; 1019 goto unlock_notfound;
@@ -1031,7 +1031,7 @@ static int receive_cb_reply(struct svc_sock *svsk, struct svc_rqst *rqstp)
1031 memcpy(dst->iov_base, src->iov_base, src->iov_len); 1031 memcpy(dst->iov_base, src->iov_base, src->iov_len);
1032 xprt_complete_rqst(req->rq_task, rqstp->rq_arg.len); 1032 xprt_complete_rqst(req->rq_task, rqstp->rq_arg.len);
1033 rqstp->rq_arg.len = 0; 1033 rqstp->rq_arg.len = 0;
1034 spin_unlock_bh(&bc_xprt->transport_lock); 1034 spin_unlock(&bc_xprt->recv_lock);
1035 return 0; 1035 return 0;
1036unlock_notfound: 1036unlock_notfound:
1037 printk(KERN_NOTICE 1037 printk(KERN_NOTICE
@@ -1040,7 +1040,7 @@ unlock_notfound:
1040 __func__, ntohl(calldir), 1040 __func__, ntohl(calldir),
1041 bc_xprt, ntohl(xid)); 1041 bc_xprt, ntohl(xid));
1042unlock_eagain: 1042unlock_eagain:
1043 spin_unlock_bh(&bc_xprt->transport_lock); 1043 spin_unlock(&bc_xprt->recv_lock);
1044 return -EAGAIN; 1044 return -EAGAIN;
1045} 1045}
1046 1046