[git commit] mount: do not guess mount as NFS if "hostname:" contains slashes

Denys Vlasenko vda.linux at googlemail.com
Sat Dec 5 13:14:11 UTC 2020


commit: https://git.busybox.net/busybox/commit/?id=b1eedfcfa1d2281b2e1b8773ab0130c5196b4505
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
singlemount                                         1273    1295     +22

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 util-linux/mount.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/util-linux/mount.c b/util-linux/mount.c
index dba583544..7625d8424 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -2064,14 +2064,18 @@ static int singlemount(struct mntent *mp, int ignore_busy)
 	}
 
 	// Might this be an NFS filesystem?
-	if ((!mp->mnt_type || is_prefixed_with(mp->mnt_type, "nfs"))
-	 && strchr(mp->mnt_fsname, ':') != NULL
-	 && !(vfsflags & (MS_REMOUNT | MS_BIND | MS_MOVE))
+	if (!(vfsflags & (MS_BIND | MS_MOVE))
+	 && (!mp->mnt_type || is_prefixed_with(mp->mnt_type, "nfs"))
 	) {
-		if (!mp->mnt_type)
-			mp->mnt_type = (char*)"nfs";
-		rc = nfsmount(mp, vfsflags, filteropts);
-		goto report_error;
+		char *colon = strchr(mp->mnt_fsname, ':');
+		if (colon /* looks like "hostname:..." */
+		 && strchrnul(mp->mnt_fsname, '/') > colon /* "hostname:" has no slashes */
+		) {
+			if (!mp->mnt_type)
+				mp->mnt_type = (char*)"nfs";
+			rc = nfsmount(mp, vfsflags, filteropts);
+			goto report_error;
+		}
 	}
 
 	// Look at the file.  (Not found isn't a failure for remount, or for


More information about the busybox-cvs mailing list