aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@parallels.com>2010-09-27 05:58:42 -0400
committerJ. Bruce Fields <bfields@redhat.com>2010-09-27 10:16:11 -0400
commite3bfca01c1ad378deaee598292bcc7ee19024563 (patch)
treebc4a89934cfb309f3d835917257e17e5d5236c6c /net/sunrpc
parentbf18ab32ff2a50a3d13d559f26f94ecfba131f24 (diff)
sunrpc: Make xprt auth cache release work with the xprt
This is done in order to facilitate getting the ip_map_cache from which to put the ip_map. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'net/sunrpc')
-rw-r--r--net/sunrpc/svc_xprt.c5
-rw-r--r--net/sunrpc/svcauth_unix.c9
2 files changed, 8 insertions, 6 deletions
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index 95fc3e8c51d6..385d822419ca 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -128,9 +128,8 @@ static void svc_xprt_free(struct kref *kref)
128 struct svc_xprt *xprt = 128 struct svc_xprt *xprt =
129 container_of(kref, struct svc_xprt, xpt_ref); 129 container_of(kref, struct svc_xprt, xpt_ref);
130 struct module *owner = xprt->xpt_class->xcl_owner; 130 struct module *owner = xprt->xpt_class->xcl_owner;
131 if (test_bit(XPT_CACHE_AUTH, &xprt->xpt_flags) && 131 if (test_bit(XPT_CACHE_AUTH, &xprt->xpt_flags))
132 xprt->xpt_auth_cache != NULL) 132 svcauth_unix_info_release(xprt);
133 svcauth_unix_info_release(xprt->xpt_auth_cache);
134 xprt->xpt_ops->xpo_free(xprt); 133 xprt->xpt_ops->xpo_free(xprt);
135 module_put(owner); 134 module_put(owner);
136} 135}
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
index 31b99c599e7e..49e39ff22910 100644
--- a/net/sunrpc/svcauth_unix.c
+++ b/net/sunrpc/svcauth_unix.c
@@ -472,10 +472,13 @@ ip_map_cached_put(struct svc_rqst *rqstp, struct ip_map *ipm)
472} 472}
473 473
474void 474void
475svcauth_unix_info_release(void *info) 475svcauth_unix_info_release(struct svc_xprt *xpt)
476{ 476{
477 struct ip_map *ipm = info; 477 struct ip_map *ipm;
478 cache_put(&ipm->h, &ip_map_cache); 478
479 ipm = xpt->xpt_auth_cache;
480 if (ipm != NULL)
481 cache_put(&ipm->h, &ip_map_cache);
479} 482}
480 483
481/**************************************************************************** 484/****************************************************************************