]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Apr 2024 14:18:55 +0000 (16:18 +0200)
[ Upstream commit 89b24336f03a8ba560e96b0c47a8434a7fa48e3c ]

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 d0761ca8cb5422d517dfd449ac695c81e6ad9db6..162866cfe83a268f04ce1e7073c6792b7b75c6b9 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;
        }