diff options
author | David Howells <dhowells@redhat.com> | 2024-11-06 13:03:22 +0000 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-11-07 11:30:34 -0800 |
commit | fc9de52de38f656399d2ce40f7349a6b5f86e787 (patch) | |
tree | bb72f17c4925b250351bce06bc4a1781ebaebfae /net/smc | |
parent | de88df01796b309903b70888fbdf2b89607e3a6a (diff) |
rxrpc: Fix missing locking causing hanging calls
If a call gets aborted (e.g. because kafs saw a signal) between it being
queued for connection and the I/O thread picking up the call, the abort
will be prioritised over the connection and it will be removed from
local->new_client_calls by rxrpc_disconnect_client_call() without a lock
being held. This may cause other calls on the list to disappear if a race
occurs.
Fix this by taking the client_call_lock when removing a call from whatever
list its ->wait_link happens to be on.
Signed-off-by: David Howells <dhowells@redhat.com>
cc: linux-afs@lists.infradead.org
Reported-by: Marc Dionne <marc.dionne@auristor.com>
Fixes: 9d35d880e0e4 ("rxrpc: Move client call connection to the I/O thread")
Link: https://patch.msgid.link/726660.1730898202@warthog.procyon.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/smc')
0 files changed, 0 insertions, 0 deletions