Messages in this thread Patch in this message | | | From | Eiichi Tsukata <> | Subject | [PATCH net 2/2] rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer() | Date | Sun, 21 Nov 2021 04:16:08 +0000 |
| |
Need to call rxrpc_put_local() for peer candidate before kfree() as it holds a ref to rxrpc_local.
Fixes: 9ebeddef58c4 ("rxrpc: rxrpc_peer needs to hold a ref on the rxrpc_local record") Signed-off-by: Eiichi Tsukata <eiichi.tsukata@nutanix.com> --- net/rxrpc/peer_object.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/net/rxrpc/peer_object.c b/net/rxrpc/peer_object.c index 68396d052052..431b62bc1da2 100644 --- a/net/rxrpc/peer_object.c +++ b/net/rxrpc/peer_object.c @@ -364,10 +364,12 @@ struct rxrpc_peer *rxrpc_lookup_peer(struct rxrpc_sock *rx, spin_unlock_bh(&rxnet->peer_hash_lock); - if (peer) + if (peer) { + rxrpc_put_local(candidate->local); kfree(candidate); - else + } else { peer = candidate; + } } _net("PEER %d {%pISp}", peer->debug_id, &peer->srx.transport); -- 2.33.1
| |