[PATCH] mount.cifs: handle errors from rename() in del_mtab

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The new del_mtab code ignored errors from rename(). Make it handle that
error as well like it does other errors. Also, move the setting of
rc = EX_FILEIO under the del_mtab_error label. All of the existing places
that goto that label set that error already.

Cc: Carlos Maiolino <cmaiolino@xxxxxxxxxx>
Signed-off-by: Jeff Layton <jlayton@xxxxxxxxx>
---
 mount.cifs.c |   14 +++++---------
 1 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/mount.cifs.c b/mount.cifs.c
index af071c1..cd0f3c5 100644
--- a/mount.cifs.c
+++ b/mount.cifs.c
@@ -1639,14 +1639,12 @@ del_mtab(char *mountpoint)
 	mtabdir = realloc(mtabdir, strlen(mtabdir) + strlen(MNT_TMP_FILE) + 2);
 	if (!mtabdir) {
 		fprintf(stderr, "del_mtab: cannot determine current mtab path");
-		rc = EX_FILEIO;
 		goto del_mtab_exit;
 	}
 
 	mtabtmpfile = strcat(mtabdir, MNT_TMP_FILE);
 	if (!mtabtmpfile) {
 		fprintf(stderr, "del_mtab: cannot allocate memory to tmp file");
-		rc = EX_FILEIO;
 		goto del_mtab_exit;
 	}
 
@@ -1654,21 +1652,18 @@ del_mtab(char *mountpoint)
 	rc = lock_mtab();
 	if (rc) {
 		fprintf(stderr, "del_mtab: cannot lock mtab");
-		rc = EX_FILEIO;
 		goto del_mtab_exit;
 	}
 
 	mtabtmpfile = mktemp(mtabtmpfile);
 	if (!mtabtmpfile) {
 		fprintf(stderr, "del_mtab: cannot setup tmp file destination");
-		rc = EX_FILEIO;
 		goto del_mtab_exit;
 	}
 
 	mntmtab = setmntent(MOUNTED, "r");
 	if (!mntmtab) {
 		fprintf(stderr, "del_mtab: could not update mount table\n");
-		rc = EX_FILEIO;
 		goto del_mtab_exit;
 	}
 
@@ -1676,7 +1671,6 @@ del_mtab(char *mountpoint)
 	if (!mnttmp) {
 		fprintf(stderr, "del_mtab: could not update mount table\n");
 		endmntent(mntmtab);
-		rc = EX_FILEIO;
 		goto del_mtab_exit;
 	}
 
@@ -1686,7 +1680,6 @@ del_mtab(char *mountpoint)
 		rc = addmntent(mnttmp, mountent);
 		if (rc) {
 			fprintf(stderr, "del_mtab: unable to add mount entry to mtab\n");
-			rc = EX_FILEIO;
 			goto del_mtab_error;
 		}
 	}
@@ -1696,11 +1689,13 @@ del_mtab(char *mountpoint)
 	tmprc = my_endmntent(mnttmp, 0);
 	if (tmprc) {
 		fprintf(stderr, "del_mtab: error %d detected on close of tmp file\n", tmprc);
-		rc = EX_FILEIO;
 		goto del_mtab_error;
 	}
 
-	rename(mtabtmpfile, MOUNTED);
+	if (rename(mtabtmpfile, MOUNTED)) {
+		fprintf(stderr, "del_mtab: error %d when renaming mtab in place\n", errno);
+		goto del_mtab_error;
+	}
 
 del_mtab_exit:
 	unlock_mtab();
@@ -1708,6 +1703,7 @@ del_mtab_exit:
 	return rc;
 
 del_mtab_error:
+	rc = EX_FILEIO;
 	if (unlink(mtabtmpfile))
 		fprintf(stderr, "del_mtab: failed to delete tmp file - %s\n",
 				strerror(errno));
-- 
1.7.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux