summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/xprt.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@hammerspace.com>2019-01-30 20:51:26 +0100
committerTrond Myklebust <trond.myklebust@hammerspace.com>2019-02-20 23:33:54 +0100
commit0ffe86f48026b7f34db22d1004bc9992f0db8b33 (patch)
treedd64e946ccdfdef857fc51476b66fb48efee5de2 /net/sunrpc/xprt.c
parentSUNRPC: Set memalloc_nofs_save() on all rpciod/xprtiod jobs (diff)
downloadlinux-0ffe86f48026b7f34db22d1004bc9992f0db8b33.tar.xz
linux-0ffe86f48026b7f34db22d1004bc9992f0db8b33.zip
SUNRPC: Use poll() to fix up the socket requeue races
Because we clear XPRT_SOCK_DATA_READY before reading, we can end up with a situation where new data arrives, causing xs_data_ready() to queue up a second receive worker job for the same socket, which then immediately gets stuck waiting on the transport receive mutex. The fix is to only clear XPRT_SOCK_DATA_READY once we're done reading, and then to use poll() to check if we might need to queue up a new job in order to deal with any new data. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'net/sunrpc/xprt.c')
0 files changed, 0 insertions, 0 deletions