mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
rxrpc: Fix key reference count leak from call->key
When creating a client call in rxrpc_alloc_client_call(), the code obtains
a reference to the key. This is never cleaned up and gets leaked when the
call is destroyed.
Fix this by freeing call->key in rxrpc_destroy_call().
Before the patch, it shows the key reference counter elevated:
$ cat /proc/keys | grep afs@54321
1bffe9cd I--Q--i 8053480 4169w 3b010000 1000 1000 rxrpc afs@54321: ka
$
After the patch, the invalidated key is removed when the code exits:
$ cat /proc/keys | grep afs@54321
$
Fixes: f3441d4125 ("rxrpc: Copy client call parameters into rxrpc_call earlier")
Signed-off-by: Anderson Nascimento <anderson@allelesecurity.com>
Co-developed-by: David Howells <dhowells@redhat.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Jeffrey Altman <jaltman@auristor.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Simon Horman <horms@kernel.org>
cc: linux-afs@lists.infradead.org
cc: stable@kernel.org
Link: https://patch.msgid.link/20260408121252.2249051-9-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
65b3ffe097
commit
d666540d21
|
|
@ -692,6 +692,7 @@ static void rxrpc_destroy_call(struct work_struct *work)
|
|||
rxrpc_put_bundle(call->bundle, rxrpc_bundle_put_call);
|
||||
rxrpc_put_peer(call->peer, rxrpc_peer_put_call);
|
||||
rxrpc_put_local(call->local, rxrpc_local_put_call);
|
||||
key_put(call->key);
|
||||
call_rcu(&call->rcu, rxrpc_rcu_free_call);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user