svn commit: r237146 - projects/nfsv4.1-client/sys/rpc
Rick Macklem
rmacklem at FreeBSD.org
Fri Jun 15 21:45:25 UTC 2012
Author: rmacklem
Date: Fri Jun 15 21:45:24 2012
New Revision: 237146
URL: http://svn.freebsd.org/changeset/base/237146
Log:
Fix a refence count problem for the backchannel SVCXPRT structure.
Modified:
projects/nfsv4.1-client/sys/rpc/clnt_rc.c
projects/nfsv4.1-client/sys/rpc/svc_vc.c
Modified: projects/nfsv4.1-client/sys/rpc/clnt_rc.c
==============================================================================
--- projects/nfsv4.1-client/sys/rpc/clnt_rc.c Fri Jun 15 20:27:15 2012 (r237145)
+++ projects/nfsv4.1-client/sys/rpc/clnt_rc.c Fri Jun 15 21:45:24 2012 (r237146)
@@ -367,6 +367,7 @@ static bool_t
clnt_reconnect_control(CLIENT *cl, u_int request, void *info)
{
struct rc_data *rc = (struct rc_data *)cl->cl_private;
+ SVCXPRT *xprt;
if (info == NULL) {
return (FALSE);
@@ -449,6 +450,10 @@ clnt_reconnect_control(CLIENT *cl, u_int
break;
case CLSET_BACKCHANNEL:
+printf("clntrc reg backch\n");
+ xprt = (SVCXPRT *)info;
+ SVC_ACQUIRE(xprt);
+ xprt_register(xprt);
rc->rc_backchannel = info;
break;
@@ -488,9 +493,16 @@ static void
clnt_reconnect_destroy(CLIENT *cl)
{
struct rc_data *rc = (struct rc_data *)cl->cl_private;
+ SVCXPRT *xprt;
if (rc->rc_client)
CLNT_DESTROY(rc->rc_client);
+ if (rc->rc_backchannel) {
+printf("clntrc dereg backch\n");
+ xprt = (SVCXPRT *)rc->rc_backchannel;
+ xprt_unregister(xprt);
+ SVC_RELEASE(xprt);
+ }
crfree(rc->rc_ucred);
mtx_destroy(&rc->rc_lock);
mem_free(rc, sizeof(*rc));
Modified: projects/nfsv4.1-client/sys/rpc/svc_vc.c
==============================================================================
--- projects/nfsv4.1-client/sys/rpc/svc_vc.c Fri Jun 15 20:27:15 2012 (r237145)
+++ projects/nfsv4.1-client/sys/rpc/svc_vc.c Fri Jun 15 21:45:24 2012 (r237146)
@@ -294,9 +294,6 @@ svc_vc_create_backchannel(SVCPOOL *pool)
xprt->xp_p1 = cd;
xprt->xp_p2 = NULL;
xprt->xp_ops = &svc_vc_backchannel_ops;
-
- xprt_register(xprt);
-
return (xprt);
}
More information about the svn-src-projects
mailing list