diff options
author | Pavel Emelyanov <xemul@parallels.com> | 2010-09-27 05:58:42 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2010-09-27 10:16:11 -0400 |
commit | e3bfca01c1ad378deaee598292bcc7ee19024563 (patch) | |
tree | bc4a89934cfb309f3d835917257e17e5d5236c6c /net/sunrpc | |
parent | bf18ab32ff2a50a3d13d559f26f94ecfba131f24 (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.c | 5 | ||||
-rw-r--r-- | net/sunrpc/svcauth_unix.c | 9 |
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 | ||
474 | void | 474 | void |
475 | svcauth_unix_info_release(void *info) | 475 | svcauth_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 | /**************************************************************************** |