2004-01-26 23:11:02

by Mike Waychison

[permalink] [raw]
Subject: [PATCH 2/2] vfsmount_lock / mnt_parent

The attached patch ensures that we grab vfsmount_lock when grabbing a
reference to mnt_parent in follow_up and follow_dotdot.

We also don't need to access ->mnt_parent in follow_mount and
__follow_down to mntput because we already the parent pointer on the stack.


--
Mike Waychison
Sun Microsystems, Inc.
1 (650) 352-5299 voice
1 (416) 202-8336 voice
mailto: [email protected]
http://www.sun.com

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOTICE: The opinions expressed in this email are held by me,
and may not represent the views of Sun Microsystems, Inc.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Attachments:
follow_friends_vfsmount_lock.patch (1.98 kB)

2004-01-27 14:14:47

by Maneesh Soni

[permalink] [raw]
Subject: Re: [PATCH 2/2] vfsmount_lock / mnt_parent

On Mon, Jan 26, 2004 at 11:11:31PM +0000, Mike Waychison wrote:
> The attached patch ensures that we grab vfsmount_lock when grabbing a
> reference to mnt_parent in follow_up and follow_dotdot.
>
> We also don't need to access ->mnt_parent in follow_mount and
> __follow_down to mntput because we already the parent pointer on the stack.
>
>

As pointed by Viro on IRC, there are other places where we access/use
mnt_parent without any protection. IIUC this needs either vfsmount_lock or the
namespace sem for protection. I did audit such places and hope not missed
anything else.

One such place is in autofs4's is_vfsmnt_tree_busy() routine. I hope Ian still
has the expire patch which corrects it. Didn't know why this patch never hit
lkml.

IMO do_kern_mount() probably don't need any protection for mnt_parent as it is
still initializing the vfsmount struct.

The other remaining place is m68k/atari/stram.c:swap_init() where it is
initializing a static vfsmount struct, so again IMO no lock required here.

Thanks,
Maneesh

--
Maneesh Soni
Linux Technology Center,
IBM Software Lab, Bangalore, India
email: [email protected]
Phone: 91-80-5044999 Fax: 91-80-5268553
T/L : 9243696

2004-01-27 15:24:40

by Ian Kent

[permalink] [raw]
Subject: Re: [PATCH 2/2] vfsmount_lock / mnt_parent


Sorry I mised this thread but ...

On Tue, 27 Jan 2004, Maneesh Soni wrote:

> On Mon, Jan 26, 2004 at 11:11:31PM +0000, Mike Waychison wrote:
> > The attached patch ensures that we grab vfsmount_lock when grabbing a
> > reference to mnt_parent in follow_up and follow_dotdot.
> >
> > We also don't need to access ->mnt_parent in follow_mount and
> > __follow_down to mntput because we already the parent pointer on the stack.
> >
> >
>
> As pointed by Viro on IRC, there are other places where we access/use
> mnt_parent without any protection. IIUC this needs either vfsmount_lock or the
> namespace sem for protection. I did audit such places and hope not missed
> anything else.
>
> One such place is in autofs4's is_vfsmnt_tree_busy() routine. I hope Ian still
> has the expire patch which corrects it. Didn't know why this patch never hit
> lkml.

The patch has never been posted seperately. It is part of a patch set for
autofs4, to support the autofs 4.1.0+ daemon, that I sent to Andrew
Morton. I was hoping that Jeremy would review them and they would make
their way to Al but perhaps neither has had time to follow up.

I must add that Mike has pointed out that the vfsmount_lock, used by the
patch is not exported and the patch does not change that.

Ian