RxRPC: do not unlock unheld spinlock in rxrpc_connect_exclusive()

If rx->conn is not NULL, rxrpc_connect_exclusive() does not
acquire the transport's client lock, but it still releases it.

The patch adds locking of the spinlock to this path.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
Alexey Khoroshilov 2014-01-26 11:39:26 +00:00 committed by David Howells
parent d8ec26d7f8
commit 8f22ba61b5

View File

@ -381,6 +381,8 @@ static int rxrpc_connect_exclusive(struct rxrpc_sock *rx,
rxrpc_assign_connection_id(conn); rxrpc_assign_connection_id(conn);
rx->conn = conn; rx->conn = conn;
} else {
spin_lock(&trans->client_lock);
} }
/* we've got a connection with a free channel and we can now attach the /* we've got a connection with a free channel and we can now attach the