From: J. Bruce Fields <bfields@citi.umich.edu>
Date: Thu, 8 Oct 2009 23:05:22 +0000 (-0500)
Subject: mountd: mountlist_del_all cleanup
X-Git-Tag: nfs-utils-1-2-2-rc6~6
X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=e0ad421dabad027c33f78268d4829643b19165fd;p=nfs-utils.git

mountd: mountlist_del_all cleanup

Common exit code.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
---

diff --git a/utils/mountd/rmtab.c b/utils/mountd/rmtab.c
index c371f8d..b028529 100644
--- a/utils/mountd/rmtab.c
+++ b/utils/mountd/rmtab.c
@@ -143,23 +143,16 @@ mountlist_del_all(struct sockaddr_in *sin)
 		return;
 	if (!(hp = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET))) {
 		xlog(L_ERROR, "can't get hostname of %s", inet_ntoa(addr));
-		xfunlock(lockid);
-		return;
+		goto out_unlock;
 	}
-	else
-		hp = hostent_dup (hp);
+	hp = hostent_dup (hp);
+
+	if (!setrmtabent("r"))
+		goto out_free;
+
+	if (!(fp = fsetrmtabent(_PATH_RMTABTMP, "w")))
+		goto out_close;
 
-	if (!setrmtabent("r")) {
-		xfunlock(lockid);
-		free (hp);
-		return;
-	}
-	if (!(fp = fsetrmtabent(_PATH_RMTABTMP, "w"))) {
-		endrmtabent();
-		xfunlock(lockid);
-		free (hp);
-		return;
-	}
 	while ((rep = getrmtabent(1, NULL)) != NULL) {
 		if (strcmp(rep->r_client, hp->h_name) == 0 &&
 		    (exp = auth_authenticate("umountall", sin, rep->r_path)))
@@ -170,10 +163,13 @@ mountlist_del_all(struct sockaddr_in *sin)
 		xlog(L_ERROR, "couldn't rename %s to %s",
 				_PATH_RMTABTMP, _PATH_RMTAB);
 	}
-	endrmtabent();	/* close & unlink */
 	fendrmtabent(fp);
-	xfunlock(lockid);
+out_close:
+	endrmtabent();	/* close & unlink */
+out_free:
 	free (hp);
+out_unlock:
+	xfunlock(lockid);
 }
 
 mountlist