]> Git Repo - linux.git/commit
rxrpc: Fix missing locking causing hanging calls
authorDavid Howells <[email protected]>
Wed, 6 Nov 2024 13:03:22 +0000 (13:03 +0000)
committerJakub Kicinski <[email protected]>
Thu, 7 Nov 2024 19:30:34 +0000 (11:30 -0800)
commitfc9de52de38f656399d2ce40f7349a6b5f86e787
treebb72f17c4925b250351bce06bc4a1781ebaebfae
parentde88df01796b309903b70888fbdf2b89607e3a6a
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 <[email protected]>
cc: [email protected]
Reported-by: Marc Dionne <[email protected]>
Fixes: 9d35d880e0e4 ("rxrpc: Move client call connection to the I/O thread")
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
include/trace/events/rxrpc.h
net/rxrpc/conn_client.c
This page took 0.053615 seconds and 4 git commands to generate.