diff options
author | David S. Miller <davem@davemloft.net> | 2020-06-08 19:13:37 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-06-08 19:13:37 -0700 |
commit | 07a86b01c07c315d9b8eeb0009a9123af3d7dd4b (patch) | |
tree | 68a3765869746bc9dd275566c9d2f475e1f66539 /net/rxrpc/peer_event.c | |
parent | 8e60eed6b38e464e8c9d68f9caecafaa554dffe0 (diff) | |
parent | 5ac0d62226a07849b1a5233af8c800a19cecab83 (diff) |
Merge tag 'rxrpc-fixes-20200605' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs
David Howells says:
====================
rxrpc: Fix hang due to missing notification
Here's a fix for AF_RXRPC. Occasionally calls hang because there are
circumstances in which rxrpc generate a notification when a call is
completed - primarily because initial packet transmission failed and the
call was killed off and an error returned. But the AFS filesystem driver
doesn't check this under all circumstances, expecting failure to be
delivered by asynchronous notification.
There are two patches: the first moves the problematic bits out-of-line and
the second contains the fix.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rxrpc/peer_event.c')
-rw-r--r-- | net/rxrpc/peer_event.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/net/rxrpc/peer_event.c b/net/rxrpc/peer_event.c index 112e490ebbcd..a852f46d5234 100644 --- a/net/rxrpc/peer_event.c +++ b/net/rxrpc/peer_event.c @@ -292,9 +292,7 @@ static void rxrpc_distribute_error(struct rxrpc_peer *peer, int error, hlist_for_each_entry_rcu(call, &peer->error_targets, error_link) { rxrpc_see_call(call); - if (call->state < RXRPC_CALL_COMPLETE && - rxrpc_set_call_completion(call, compl, 0, -error)) - rxrpc_notify_socket(call); + rxrpc_set_call_completion(call, compl, 0, -error); } } |