You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
rxrpc: Accesses of rxrpc_local::service need to be RCU managed
struct rxrpc_local->service is marked __rcu - this means that accesses of it need to be managed using RCU wrappers. There are two such places in rxrpc_release_sock() where the value is checked and cleared. Fix this by using the appropriate wrappers. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
@@ -678,9 +678,9 @@ static int rxrpc_release_sock(struct sock *sk)
|
||||
sk->sk_state = RXRPC_CLOSE;
|
||||
spin_unlock_bh(&sk->sk_receive_queue.lock);
|
||||
|
||||
if (rx->local && rx->local->service == rx) {
|
||||
if (rx->local && rcu_access_pointer(rx->local->service) == rx) {
|
||||
write_lock(&rx->local->services_lock);
|
||||
rx->local->service = NULL;
|
||||
rcu_assign_pointer(rx->local->service, NULL);
|
||||
write_unlock(&rx->local->services_lock);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user