aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorNeil Brown <neilb@cse.unsw.edu.au>2004-08-22 23:01:08 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-08-22 23:01:08 -0700
commit45bf77b483f2cf8e5aee5aff7d42b073977a7a1b (patch)
tree890b89e8027a981bae6338ba5f9c897bdfb1cdeb /net
parent086aa2c5b81b0bf6af86a136f295bca6aad70680 (diff)
downloadhistory-45bf77b483f2cf8e5aee5aff7d42b073977a7a1b.tar.gz
[PATCH] nfsd: fix ip_map cache reference count leak.
Fix a leak: when auth_unix_lookup sets CACHE_NEGATIVE, it should also auth_domain_put() the reference it holds in ipm->m_client, since setting CACHE_NEGATIVE prevents ip_map_put() from putting the reference itself. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'net')
-rw-r--r--net/sunrpc/svcauth_unix.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
index 949a33f753d91a..10e21d0812ae8b 100644
--- a/net/sunrpc/svcauth_unix.c
+++ b/net/sunrpc/svcauth_unix.c
@@ -316,7 +316,8 @@ struct auth_domain *auth_unix_lookup(struct in_addr addr)
return NULL;
if ((ipm->m_client->addr_changes - ipm->m_add_change) >0) {
- set_bit(CACHE_NEGATIVE, &ipm->h.flags);
+ if (test_and_set_bit(CACHE_NEGATIVE, &ipm->h.flags) == 0)
+ auth_domain_put(&ipm->m_client->h);
rv = NULL;
} else {
rv = &ipm->m_client->h;