lkml.org 
[lkml]   [2007]   [May]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[AppArmor 44/45] Switch to vfs_permission() in sys_fchdir()
    Switch from file_permission() to vfs_permission() in sys_fchdir(): this
    avoids calling permission() with a NULL nameidata here.

    Signed-off-by: Andreas Gruenbacher <agruen@suse.de>

    ---
    fs/open.c | 16 +++++++---------
    1 file changed, 7 insertions(+), 9 deletions(-)

    --- a/fs/open.c
    +++ b/fs/open.c
    @@ -440,10 +440,8 @@ out:

    asmlinkage long sys_fchdir(unsigned int fd)
    {
    + struct nameidata nd;
    struct file *file;
    - struct dentry *dentry;
    - struct inode *inode;
    - struct vfsmount *mnt;
    int error;

    error = -EBADF;
    @@ -451,17 +449,17 @@ asmlinkage long sys_fchdir(unsigned int
    if (!file)
    goto out;

    - dentry = file->f_path.dentry;
    - mnt = file->f_path.mnt;
    - inode = dentry->d_inode;
    + nd.dentry = file->f_path.dentry;
    + nd.mnt = file->f_path.mnt;
    + nd.flags = 0;

    error = -ENOTDIR;
    - if (!S_ISDIR(inode->i_mode))
    + if (!S_ISDIR(nd.dentry->d_inode->i_mode))
    goto out_putf;

    - error = file_permission(file, MAY_EXEC);
    + error = vfs_permission(&nd, MAY_EXEC);
    if (!error)
    - set_fs_pwd(current->fs, mnt, dentry);
    + set_fs_pwd(current->fs, nd.mnt, nd.dentry);
    out_putf:
    fput(file);
    out:
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-05-14 13:57    [W:0.021 / U:1.540 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site