]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/nfsd/nfsctl.c
nfsd: fix error handling when starting nfsd with rpcbind down
[mv-sheeva.git] / fs / nfsd / nfsctl.c
index 508941c23af7fa425864eed3d3a173cd8a4a4474..af7469efc61c982cedb0aa29cdebe5dbb4bcf56b 100644 (file)
@@ -950,14 +950,18 @@ static ssize_t __write_ports_addfd(char *buf)
                return err;
 
        err = lockd_up();
-       if (err != 0)
-               goto out;
+       if (err != 0) {
+               svc_destroy(nfsd_serv);
+               return err;
+       }
 
        err = svc_addsock(nfsd_serv, fd, buf, SIMPLE_TRANSACTION_LIMIT);
-       if (err < 0)
+       if (err < 0) {
                lockd_down();
+               svc_destroy(nfsd_serv);
+               return err;
+       }
 
-out:
        /* Decrease the count, but don't shut down the service */
        nfsd_serv->sv_nrthreads--;
        return err;