diff options
author | Benjamin Coddington <bcodding@redhat.com> | 2019-10-02 16:40:55 +0200 |
---|---|---|
committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2019-10-10 22:14:28 +0200 |
commit | af84537dbd1b39505d1f3d8023029b4a59666513 (patch) | |
tree | 0c176e56553e0ac8c56b28794b6343128df56d6e /scripts/decode_stacktrace.sh | |
parent | NFSv4: Fix leak of clp->cl_acceptor string (diff) | |
download | linux-af84537dbd1b39505d1f3d8023029b4a59666513.tar.xz linux-af84537dbd1b39505d1f3d8023029b4a59666513.zip |
SUNRPC: fix race to sk_err after xs_error_report
Since commit 4f8943f80883 ("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: 4f8943f80883 ("SUNRPC: Replace direct task wakeups from softirq context")
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'scripts/decode_stacktrace.sh')
0 files changed, 0 insertions, 0 deletions