• Benjamin Coddington's avatar
    SUNRPC: fix race to sk_err after xs_error_report · af84537d
    Benjamin Coddington authored
    Since commit 4f8943f8 ("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: default avatarBenjamin Coddington <bcodding@redhat.com>
    Fixes: 4f8943f8 ("SUNRPC: Replace direct task wakeups from softirq context")
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    af84537d
Name
Last commit
Last update
..
auth_gss Loading commit data...
xprtrdma Loading commit data...
Kconfig Loading commit data...
Makefile Loading commit data...
addr.c Loading commit data...
auth.c Loading commit data...
auth_null.c Loading commit data...
auth_unix.c Loading commit data...
backchannel_rqst.c Loading commit data...
cache.c Loading commit data...
clnt.c Loading commit data...
debugfs.c Loading commit data...
netns.h Loading commit data...
rpc_pipe.c Loading commit data...
rpcb_clnt.c Loading commit data...
sched.c Loading commit data...
socklib.c Loading commit data...
stats.c Loading commit data...
sunrpc.h Loading commit data...
sunrpc_syms.c Loading commit data...
svc.c Loading commit data...
svc_xprt.c Loading commit data...
svcauth.c Loading commit data...
svcauth_unix.c Loading commit data...
svcsock.c Loading commit data...
sysctl.c Loading commit data...
timer.c Loading commit data...
xdr.c Loading commit data...
xprt.c Loading commit data...
xprtmultipath.c Loading commit data...
xprtsock.c Loading commit data...