From 6f707d94064646762e7014d19840b5b2902b3a4e Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 1 Mar 2006 05:04:00 +0000 Subject: [PATCH] viced-client-refcount-leak-20060228 SRXAFS_CallBackRxConnAddr calls h_FindClient_r which returns a client with a refCount and the client->host held. The call to CallPostamble will release the host hold but not the client refcount. --- src/viced/afsfileprocs.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/viced/afsfileprocs.c b/src/viced/afsfileprocs.c index dee27d38ab..9577f6cd67 100644 --- a/src/viced/afsfileprocs.c +++ b/src/viced/afsfileprocs.c @@ -7346,6 +7346,8 @@ SRXAFS_CallBackRxConnAddr (struct rx_call * acall, afs_int32 *addr) thost->host = addr; rx_SetConnDeadTime(thost->callback_rxcon, 50); rx_SetConnHardDeadTime(thost->callback_rxcon, AFS_HARDDEADTIME); + h_ReleaseClient_r(tclient); + /* The hold on thost will be released by CallPostamble */ H_UNLOCK; errorCode = CallPostamble(tcon, errorCode); return errorCode; @@ -7353,6 +7355,8 @@ SRXAFS_CallBackRxConnAddr (struct rx_call * acall, afs_int32 *addr) rx_DestroyConnection(conn); } Bad_CallBackRxConnAddr: + h_ReleaseClient_r(tclient); + /* The hold on thost will be released by CallPostamble */ H_UNLOCK; #endif