summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/auth_unix.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2015-06-15 07:55:30 +0200
committerTrond Myklebust <trond.myklebust@primarydata.com>2015-06-16 17:13:21 +0200
commit298073181112a6ab6c30fe7971b99de968daf81e (patch)
tree9e5475e6fa6b3816663d26e33d80ee1182c8f487 /net/sunrpc/auth_unix.c
parentnfs: deny backchannel RPCs with an incorrect authflavor instead of dropping them (diff)
downloadlinux-298073181112a6ab6c30fe7971b99de968daf81e.tar.xz
linux-298073181112a6ab6c30fe7971b99de968daf81e.zip
SUNRPC: never enqueue a ->rq_cong request on ->sending
If the sending queue has a task without ->rq_cong set at the front, and then a number of tasks with ->rq_cong set such that they use the entire congestion window, then the queue deadlocks. The first entry cannot be processed until later entries complete. This scenario has been seen with a client using UDP to access a server, and the network connection breaking for a period of time - it doesn't recover. It never really makes sense for an ->rq_cong request to be on the ->sending queue, but it can happen when a request is being retried, and finds the transport if locked (XPRT_LOCKED). In this case we simple call __xprt_put_cong() and the deadlock goes away. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'net/sunrpc/auth_unix.c')
0 files changed, 0 insertions, 0 deletions