Commit 0be5edbc authored by Neil Brown's avatar Neil Brown Committed by Linus Torvalds

[PATCH] nfsd: make cache_init initialize reference count to 1

Presumably anyone creating a new cache entry is going to want a reference on
that cache; and indeed every caller of cache_init increments the reference
count immediately afterwards.  So may as well make cache_init set an initial
reference count of 1.

Also, note that cache_init initializes the flags; callers don't need to.
Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: default avatarNeil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 4feb71cc
...@@ -233,7 +233,6 @@ RTN *FNAME ARGS \ ...@@ -233,7 +233,6 @@ RTN *FNAME ARGS \
new = kmalloc(sizeof(*new), GFP_KERNEL); \ new = kmalloc(sizeof(*new), GFP_KERNEL); \
if (new) { \ if (new) { \
cache_init(&new->MEMBER); \ cache_init(&new->MEMBER); \
cache_get(&new->MEMBER); \
goto retry; \ goto retry; \
} \ } \
return NULL; \ return NULL; \
......
...@@ -643,7 +643,6 @@ svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name) ...@@ -643,7 +643,6 @@ svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name)
if (!new) if (!new)
goto out; goto out;
cache_init(&new->h.h); cache_init(&new->h.h);
atomic_inc(&new->h.h.refcnt);
new->h.name = kmalloc(strlen(name) + 1, GFP_KERNEL); new->h.name = kmalloc(strlen(name) + 1, GFP_KERNEL);
if (!new->h.name) if (!new->h.name)
goto out_free_dom; goto out_free_dom;
...@@ -651,7 +650,6 @@ svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name) ...@@ -651,7 +650,6 @@ svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name)
new->h.flavour = RPC_AUTH_GSS; new->h.flavour = RPC_AUTH_GSS;
new->pseudoflavor = pseudoflavor; new->pseudoflavor = pseudoflavor;
new->h.h.expiry_time = NEVER; new->h.h.expiry_time = NEVER;
new->h.h.flags = 0;
test = auth_domain_lookup(&new->h, 1); test = auth_domain_lookup(&new->h, 1);
if (test == &new->h) { if (test == &new->h) {
......
...@@ -38,7 +38,7 @@ void cache_init(struct cache_head *h) ...@@ -38,7 +38,7 @@ void cache_init(struct cache_head *h)
time_t now = get_seconds(); time_t now = get_seconds();
h->next = NULL; h->next = NULL;
h->flags = 0; h->flags = 0;
atomic_set(&h->refcnt, 0); atomic_set(&h->refcnt, 1);
h->expiry_time = now + CACHE_NEW_EXPIRY; h->expiry_time = now + CACHE_NEW_EXPIRY;
h->last_refresh = now; h->last_refresh = now;
} }
......
...@@ -55,12 +55,10 @@ struct auth_domain *unix_domain_find(char *name) ...@@ -55,12 +55,10 @@ struct auth_domain *unix_domain_find(char *name)
if (new == NULL) if (new == NULL)
return NULL; return NULL;
cache_init(&new->h.h); cache_init(&new->h.h);
atomic_inc(&new->h.h.refcnt);
new->h.name = strdup(name); new->h.name = strdup(name);
new->h.flavour = RPC_AUTH_UNIX; new->h.flavour = RPC_AUTH_UNIX;
new->addr_changes = 0; new->addr_changes = 0;
new->h.h.expiry_time = NEVER; new->h.h.expiry_time = NEVER;
new->h.h.flags = 0;
rv = auth_domain_lookup(&new->h, 2); rv = auth_domain_lookup(&new->h, 2);
if (rv == &new->h) { if (rv == &new->h) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment