• Al Viro's avatar
    [PATCH] namei fixes (6/19) · 839d9f93
    Al Viro authored
    mntget(path->mnt) in do_follow_link() moved down to right before the
    __do_follow_link() call and rigth after loop: resp.
    
    dput()+mntput() on non-ELOOP branch moved up to right after __do_follow_link()
    call.
    
    resulting
    loop:
    	mntget(path->mnt);
    	path_release(nd);
    	dput(path->mnt);
    	mntput(path->mnt);
    replaced with equivalent
    	dput(path->mnt);
    	path_release(nd);
    
    Equivalent transformations - the reason why we have that mntget() is that
    __do_follow_link() can drop a reference to nd->mnt and that's what holds
    path->mnt.  So that call can happen at any point prior to __do_follow_link()
    touching nd->mnt.  The rest is obvious.
    
    NOTE: current tree relies on symlinks *never* being mounted on anything.  It's
    not hard to get rid of that assumption (actually, that will come for free
    later in the series).  For now we are just not making the situation worse than
    it is.
    Signed-off-by: default avatarAl Viro <viro@parcelfarce.linux.theplanet.co.uk>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    839d9f93
namei.c 59.6 KB