Messages in this thread Patches in this message | | | Date | Mon, 08 Nov 2004 11:20:27 -0500 | From | Mike Waychison <> | Subject | Re: [PATCH] Mounting on floating mounts is possible |
| |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Björn Steinbrink wrote: > Hi, > > this[1] patch changed check_mnt() so that mounting on a floating mount > (i.e. one that was unmounted using MNT_DETACH and was still in use) is > possible, since we no longer check if the mountpoint is actually > reachable. The problem is that we may lose any reference to the floating > mount, but the mount on it will keep it alive, thus it will never go > away. The following patch removes the reference from the mount to its > namespace when it is unmounted lazily, so that check_mnt protects from > such mounts. > > Please CC me as I'm not subscribed to the list. > > Bjoern > > [1] http://lwn.net/Articles/91946/ > > diff -uNr --minimal a/fs/namespace.c b/fs/namespace.c > --- a/fs/namespace.c 2004-10-31 00:41:02.000000000 +0200 > +++ b/fs/namespace.c 2004-11-06 04:38:37.299013810 +0100 > @@ -358,6 +358,7 @@ > } else { > struct nameidata old_nd; > detach_mnt(mnt, &old_nd); > + mnt->mnt_namespace = NULL; > spin_unlock(&vfsmount_lock); > path_release(&old_nd); > } > -
I don't think this patch clears mnt_namespace for the root of the umounted tree. How about this?
- -- Mike Waychison Sun Microsystems, Inc. 1 (650) 352-5299 voice 1 (416) 202-8336 voice
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NOTICE: The opinions expressed in this email are held by me, and may not represent the views of Sun Microsystems, Inc. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFBj5zKdQs4kOxk3/MRAv7FAKCdtASSH1sbq8KX1Yo0IrQZJ25q9gCfUp52 Uy0LxZvoqfJ9bh5jWGv7YM4= =pce6 -----END PGP SIGNATURE--------
namespace.c | 1 + 1 files changed, 1 insertion(+)
Index: linux-2.6.9-quilt/fs/namespace.c =================================================================== --- linux-2.6.9-quilt.orig/fs/namespace.c 2004-11-08 11:18:39.980358880 -0500 +++ linux-2.6.9-quilt/fs/namespace.c 2004-11-08 11:19:24.702560072 -0500 @@ -352,6 +352,7 @@ void umount_tree(struct vfsmount *mnt) mnt = list_entry(kill.next, struct vfsmount, mnt_list); list_del_init(&mnt->mnt_list); list_del_init(&mnt->mnt_fslink); + mnt->mnt_namespace = NULL; if (mnt->mnt_parent == mnt) { spin_unlock(&vfsmount_lock); } else { | |