[klibc] [klibc:master] nfsmount: Fix wrong NFS umount path

klibc-bot for Benjamin Cama benjamin.cama at telecom-bretagne.eu
Thu Jun 28 08:33:10 PDT 2012


Commit-ID:  029622dfbfe25203275a385a5bf33d44c2409b00
Gitweb:     http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=029622dfbfe25203275a385a5bf33d44c2409b00
Author:     Benjamin Cama <benjamin.cama at telecom-bretagne.eu>
AuthorDate: Fri, 22 Jun 2012 12:17:01 +0200
Committer:  maximilian attems <max at stro.at>
CommitDate: Thu, 28 Jun 2012 17:23:14 +0200

[klibc] nfsmount: Fix wrong NFS umount path

Hi,

When mounting a NFS share and an error occurs for some reason, the NFS
share is not unmounted correctly: the local path is used instead of the
remote path in the umount_v[23]() call. This patch fixes this.

I found this while debugging some problems mounting the root file system
on NFS in a test system; I saw this in the logs (/mnt/duplicated is the
legitimate remote path):

        Jun 21 21:52:35 pangolin-test rpc.mountd[11155]: authenticated mount request from 192.168.42.2:984 for /mnt/duplicated
        (/mnt/duplicated)
        Jun 21 21:52:35 pangolin-test rpc.mountd[11155]: refused unmount request from 192.168.42.2 for /root (/): no export ent
        ry

I didn't understand why the hell it was trying to umount /root. You can
look at google for this and you'll find a lot of people wondering what
this is. I think that the big issue with this is that _a lot_ of
problems appearing _after_ not unmounting correctly the share the first
time are caused by this: I used to get mounting errors with “Stale NFS
file handle” that would never go away (NFS is so much a PITA for this
statefull behavior). You'll find a lot of people on the net trying to
reboot their NFS server and the like, in hope this errors goes away.

It was also quite misleading that the mount point for the root FS in the
initramfs is called /root. Anyway, a lot of these problems go away with
this patch.

BTW, this bug is more than 9 years old, since the inception of nfsmount!

Signed-off-by: Benjamin Cama <benjamin.cama at telecom-bretagne.eu>
Signed-off-by: maximilian attems <max at stro.at>

---
 usr/kinit/nfsmount/mount.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/usr/kinit/nfsmount/mount.c b/usr/kinit/nfsmount/mount.c
index e3838f4..e0687a6 100644
--- a/usr/kinit/nfsmount/mount.c
+++ b/usr/kinit/nfsmount/mount.c
@@ -329,9 +329,9 @@ int nfs_mount(const char *pathname, const char *hostname,
 bail:
 	if (mounted) {
 		if (data->flags & NFS_MOUNT_VER3)
-			umount_v3(path, clnt);
+			umount_v3(rem_path, clnt);
 		else
-			umount_v2(path, clnt);
+			umount_v2(rem_path, clnt);
 	}
 
 	ret = -1;


More information about the klibc mailing list