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.
This commit is contained in:
Jeffrey Altman 2006-03-01 05:04:00 +00:00
parent fc5acc0151
commit 6f707d9406

View File

@ -7346,6 +7346,8 @@ SRXAFS_CallBackRxConnAddr (struct rx_call * acall, afs_int32 *addr)
thost->host = addr; thost->host = addr;
rx_SetConnDeadTime(thost->callback_rxcon, 50); rx_SetConnDeadTime(thost->callback_rxcon, 50);
rx_SetConnHardDeadTime(thost->callback_rxcon, AFS_HARDDEADTIME); rx_SetConnHardDeadTime(thost->callback_rxcon, AFS_HARDDEADTIME);
h_ReleaseClient_r(tclient);
/* The hold on thost will be released by CallPostamble */
H_UNLOCK; H_UNLOCK;
errorCode = CallPostamble(tcon, errorCode); errorCode = CallPostamble(tcon, errorCode);
return errorCode; return errorCode;
@ -7353,6 +7355,8 @@ SRXAFS_CallBackRxConnAddr (struct rx_call * acall, afs_int32 *addr)
rx_DestroyConnection(conn); rx_DestroyConnection(conn);
} }
Bad_CallBackRxConnAddr: Bad_CallBackRxConnAddr:
h_ReleaseClient_r(tclient);
/* The hold on thost will be released by CallPostamble */
H_UNLOCK; H_UNLOCK;
#endif #endif