Commit cb276805 authored by J. Bruce Fields's avatar J. Bruce Fields Committed by Linus Torvalds

nfsd: fix possible oops on re-insertion of rpcsec_gss modules

The handling of the re-registration case is wrong here; the "test" that was
returned from auth_domain_lookup will not be used again, so that reference
should be put.  And auth_domain_lookup never did anything with "new" in
this case, so we should just clean it up ourself.

Thanks to Akinobu Mita for bug report, analysis, and testing.

Cc: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: default avatar"J. Bruce Fields" <bfields@citi.umich.edu>
Cc: Neil Brown <neilb@suse.de>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: <stable@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d1709e47
...@@ -769,11 +769,12 @@ svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name) ...@@ -769,11 +769,12 @@ svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name)
new->h.flavour = &svcauthops_gss; new->h.flavour = &svcauthops_gss;
new->pseudoflavor = pseudoflavor; new->pseudoflavor = pseudoflavor;
stat = 0;
test = auth_domain_lookup(name, &new->h); test = auth_domain_lookup(name, &new->h);
if (test != &new->h) { /* XXX Duplicate registration? */ if (test != &new->h) { /* Duplicate registration */
auth_domain_put(&new->h); auth_domain_put(test);
/* dangling ref-count... */ kfree(new->h.name);
goto out; goto out_free_dom;
} }
return 0; return 0;
......
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