]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
NFSD: handle errors better in write_ports_addfd()
authorNeilBrown <neilb@suse.de>
Mon, 29 Nov 2021 04:51:25 +0000 (15:51 +1100)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 13 Dec 2021 18:42:49 +0000 (13:42 -0500)
If write_ports_add() fails, we shouldn't destroy the serv, unless we had
only just created it.  So if there are any permanent sockets already
attached, leave the serv in place.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfsctl.c

index 51a49e0cfe3762e84f324f900b82f890dcfa5425..bf4c9996ad926fc2b0d5ef4ac599b640cf3a6160 100644 (file)
@@ -742,7 +742,7 @@ static ssize_t __write_ports_addfd(char *buf, struct net *net, const struct cred
                return err;
 
        err = svc_addsock(nn->nfsd_serv, fd, buf, SIMPLE_TRANSACTION_LIMIT, cred);
-       if (err < 0) {
+       if (err < 0 && list_empty(&nn->nfsd_serv->sv_permsocks)) {
                nfsd_destroy(net);
                return err;
        }