diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-12 01:01:44 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-12 01:01:44 -0400 |
commit | 8e7757d83d07cc77ee2661e9615a2f9f4ce540cd (patch) | |
tree | b6c15efae2c117e7fbbe56ad0aaa2859d1cd35a8 /net/sunrpc/svcsock.c | |
parent | dd198ce7141aa8dd9ffcc9549de422fb055508de (diff) | |
parent | 1bd5d6d08ea7ed0794c8a3908383d6d6fc202cdd (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.c | 6 |
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; |
1036 | unlock_notfound: | 1036 | unlock_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)); |
1042 | unlock_eagain: | 1042 | unlock_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 | ||