summaryrefslogtreecommitdiffstats
path: root/net/rxrpc/call_accept.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2018-10-08 15:46:17 +0100
committerDavid Howells <dhowells@redhat.com>2018-10-08 22:42:04 +0100
commit647530924f47c93db472ee3cf43b7ef1425581b6 (patch)
tree49c180e0069489ae18d8f60fcf089da7d523ed86 /net/rxrpc/call_accept.c
parent298bc15b2079c324e82d0a6fda39c3d762af7282 (diff)
downloadlinux-647530924f47c93db472ee3cf43b7ef1425581b6.tar.gz
linux-647530924f47c93db472ee3cf43b7ef1425581b6.tar.bz2
linux-647530924f47c93db472ee3cf43b7ef1425581b6.zip
rxrpc: Fix connection-level abort handling
Fix connection-level abort handling to cache the abort and error codes properly so that a new incoming call can be properly aborted if it races with the parent connection being aborted by another CPU. The abort_code and error parameters can then be dropped from rxrpc_abort_calls(). Fixes: f5c17aaeb2ae ("rxrpc: Calls should only have one terminal state") Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'net/rxrpc/call_accept.c')
-rw-r--r--net/rxrpc/call_accept.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/rxrpc/call_accept.c b/net/rxrpc/call_accept.c
index f55f67894465..1c4ebc0cb25b 100644
--- a/net/rxrpc/call_accept.c
+++ b/net/rxrpc/call_accept.c
@@ -405,11 +405,11 @@ struct rxrpc_call *rxrpc_new_incoming_call(struct rxrpc_local *local,
case RXRPC_CONN_REMOTELY_ABORTED:
rxrpc_set_call_completion(call, RXRPC_CALL_REMOTELY_ABORTED,
- conn->remote_abort, -ECONNABORTED);
+ conn->abort_code, conn->error);
break;
case RXRPC_CONN_LOCALLY_ABORTED:
rxrpc_abort_call("CON", call, sp->hdr.seq,
- conn->local_abort, -ECONNABORTED);
+ conn->abort_code, conn->error);
break;
default:
BUG();