OpenAFS Master Repository branch, openafs-stable-1_6_x, updated. openafs-stable-1_6_1pre2-204-g94e3c06

Gerrit Code Review gerrit@openafs.org
Sun, 2 Dec 2012 11:02:12 -0800 (PST)


The following commit has been merged in the openafs-stable-1_6_x branch:
commit 94e3c06e46fc9cd3f4e68dac6d0a1797bf728fd2
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Nov 21 10:39:51 2012 -0600

    LINUX: Dir follow_link should set LAST_BIND
    
    For our faux-symlink directory follow_link operation, we leave the
    given nameidata struct with an invalid 'last' component. That is,
    nd->last is not changed or set to anything meaningful.
    
    Usually the callers of our follow_link op do not care about the last
    component of the nameidata. However, at least one caller does: the
    caller near the do_link label in open_namei(). This is called during
    processing for O_CREAT operations on symlinks, and since our
    directories look like symlinks, it gets called. It tries to use
    nd->last to look up the last component of the dereferenced path (so it
    can try to create it, as necessary), but since our nd->last is not
    set, this will not work.
    
    Specifically, our nd->last.name is not pointing into the names cache,
    so the subsequent putname/__putname on it will corrupt the names
    cache. However, even if this were not a problem, the actual contents
    of the last component do not seem meaningful so this would probably
    result in incorrect behavior anyway.
    
    To avoid all of this, set nd->last_type to LAST_BIND, so any callers
    know that the last component of the given nd is not valid, and we are
    pointing directly to the target component with a dentry.
    
    Reviewed-on: http://gerrit.openafs.org/8489
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
    Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
    (cherry picked from commit bd57c7d64844ca26d80f2b29db470dacd134fc56)
    
    Change-Id: I4defb55064a4452e437b8a6c3e600887b4749fff
    Reviewed-on: http://gerrit.openafs.org/8543
    Reviewed-by: Ken Dreyer <ktdreyer@ktdreyer.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
    Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>

 src/afs/LINUX/osi_vnodeops.c   |    2 ++
 src/afs/LINUX24/osi_vnodeops.c |    2 ++
 2 files changed, 4 insertions(+), 0 deletions(-)

-- 
OpenAFS Master Repository