rxrpc: Don't use sk->sk_receive_queue.lock to guard socket state changes
authorDavid Howells <dhowells@redhat.com>
Mon, 10 Oct 2022 12:13:47 +0000 (13:13 +0100)
committerDavid Howells <dhowells@redhat.com>
Thu, 1 Dec 2022 13:36:41 +0000 (13:36 +0000)
Don't use sk->sk_receive_queue.lock to guard socket state changes as the
socket mutex is sufficient.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org

net/rxrpc/af_rxrpc.c

index 7a0dc01..8ad4d85 100644 (file)
@@ -812,14 +812,12 @@ static int rxrpc_shutdown(struct socket *sock, int flags)
 
        lock_sock(sk);
 
-       spin_lock_bh(&sk->sk_receive_queue.lock);
        if (sk->sk_state < RXRPC_CLOSE) {
                sk->sk_state = RXRPC_CLOSE;
                sk->sk_shutdown = SHUTDOWN_MASK;
        } else {
                ret = -ESHUTDOWN;
        }
-       spin_unlock_bh(&sk->sk_receive_queue.lock);
 
        rxrpc_discard_prealloc(rx);
 
@@ -872,9 +870,7 @@ static int rxrpc_release_sock(struct sock *sk)
                break;
        }
 
-       spin_lock_bh(&sk->sk_receive_queue.lock);
        sk->sk_state = RXRPC_CLOSE;
-       spin_unlock_bh(&sk->sk_receive_queue.lock);
 
        if (rx->local && rcu_access_pointer(rx->local->service) == rx) {
                write_lock(&rx->local->services_lock);