linux_dsm_epyc7002/net/sunrpc
Benjamin Coddington af84537dbd SUNRPC: fix race to sk_err after xs_error_report
Since commit 4f8943f808 ("SUNRPC: Replace direct task wakeups from
softirq context") there has been a race to the value of the sk_err if both
XPRT_SOCK_WAKE_ERROR and XPRT_SOCK_WAKE_DISCONNECT are set.  In that case,
we may end up losing the sk_err value that existed when xs_error_report was
called.

Fix this by reverting to the previous behavior: instead of using SO_ERROR
to retrieve the value at a later time (which might also return sk_err_soft),
copy the sk_err value onto struct sock_xprt, and use that value to wake
pending tasks.

Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Fixes: 4f8943f808 ("SUNRPC: Replace direct task wakeups from softirq context")
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2019-10-10 16:14:28 -04:00
..
auth_gss NFS Client Updates for Linux 5.3 2019-09-26 12:20:14 -07:00
xprtrdma Highlights: 2019-09-27 17:00:27 -07:00
addr.c
auth_null.c
auth_unix.c
auth.c
backchannel_rqst.c
cache.c
clnt.c NFS Client Updates for Linux 5.3 2019-09-26 12:20:14 -07:00
debugfs.c
Kconfig
Makefile
netns.h
rpc_pipe.c
rpcb_clnt.c
sched.c
socklib.c
stats.c
sunrpc_syms.c
sunrpc.h
svc_xprt.c
svc.c
svcauth_unix.c
svcauth.c
svcsock.c
sysctl.c
timer.c
xdr.c
xprt.c NFS Client Updates for Linux 5.3 2019-09-26 12:20:14 -07:00
xprtmultipath.c
xprtsock.c SUNRPC: fix race to sk_err after xs_error_report 2019-10-10 16:14:28 -04:00