]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
sunrpc: svcauth_gss_register_pseudoflavor must reject duplicate registrations.
authorNeilBrown <neilb@suse.de>
Fri, 22 May 2020 02:01:33 +0000 (12:01 +1000)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 28 May 2020 22:15:00 +0000 (18:15 -0400)
There is no valid case for supporting duplicate pseudoflavor
registrations.
Currently the silent acceptance of such registrations is hiding a bug.
The rpcsec_gss_krb5 module registers 2 flavours but does not unregister
them, so if you load, unload, reload the module, it will happily
continue to use the old registration which now has pointers to the
memory were the module was originally loaded.  This could lead to
unexpected results.

So disallow duplicate registrations.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=206651
Cc: stable@vger.kernel.org (v2.6.12+)
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/auth_gss/svcauth_gss.c

index 50d93c49ef1af670a0cd5bd82a4d69abaa926740..49bb346a62154734e002682e4f56046dcea6a7d0 100644 (file)
@@ -826,9 +826,11 @@ svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name)
        new->h.flavour = &svcauthops_gss;
        new->pseudoflavor = pseudoflavor;
 
-       stat = 0;
        test = auth_domain_lookup(name, &new->h);
-       if (test != &new->h) { /* Duplicate registration */
+       if (test != &new->h) {
+               pr_warn("svc: duplicate registration of gss pseudo flavour %s.\n",
+                       name);
+               stat = -EADDRINUSE;
                auth_domain_put(test);
                kfree(new->h.name);
                goto out_free_dom;