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 27/45] Add a struct vfsmount parameter to vfs_removexattr()
    The vfsmount will be passed down to the LSM hook so that LSMs can compute
    pathnames.

    Signed-off-by: Tony Jones <tonyj@suse.de>
    Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
    Signed-off-by: John Johansen <jjohansen@suse.de>

    ---
    fs/nfsd/vfs.c | 7 ++++---
    fs/xattr.c | 12 ++++++------
    include/linux/xattr.h | 2 +-
    3 files changed, 11 insertions(+), 10 deletions(-)

    --- a/fs/nfsd/vfs.c
    +++ b/fs/nfsd/vfs.c
    @@ -1957,6 +1957,7 @@ nfsd_get_posix_acl(struct svc_fh *fhp, i
    int
    nfsd_set_posix_acl(struct svc_fh *fhp, int type, struct posix_acl *acl)
    {
    + struct vfsmount *mnt;
    struct inode *inode = fhp->fh_dentry->d_inode;
    char *name;
    void *value = NULL;
    @@ -1989,14 +1990,14 @@ nfsd_set_posix_acl(struct svc_fh *fhp, i
    } else
    size = 0;

    + mnt = fhp->fh_export->ex_mnt;
    if (size)
    - error = vfs_setxattr(fhp->fh_dentry, fhp->fh_export->ex_mnt,
    - name, value, size,0);
    + error = vfs_setxattr(fhp->fh_dentry, mnt, name, value, size,0);
    else {
    if (!S_ISDIR(inode->i_mode) && type == ACL_TYPE_DEFAULT)
    error = 0;
    else {
    - error = vfs_removexattr(fhp->fh_dentry, name);
    + error = vfs_removexattr(fhp->fh_dentry, mnt, name);
    if (error == -ENODATA)
    error = 0;
    }
    --- a/fs/xattr.c
    +++ b/fs/xattr.c
    @@ -165,7 +165,7 @@ vfs_listxattr(struct dentry *dentry, str
    EXPORT_SYMBOL_GPL(vfs_listxattr);

    int
    -vfs_removexattr(struct dentry *dentry, char *name)
    +vfs_removexattr(struct dentry *dentry, struct vfsmount *mnt, char *name)
    {
    struct inode *inode = dentry->d_inode;
    int error;
    @@ -438,7 +438,7 @@ sys_flistxattr(int fd, char __user *list
    * Extended attribute REMOVE operations
    */
    static long
    -removexattr(struct dentry *d, char __user *name)
    +removexattr(struct dentry *dentry, struct vfsmount *mnt, char __user *name)
    {
    int error;
    char kname[XATTR_NAME_MAX + 1];
    @@ -449,7 +449,7 @@ removexattr(struct dentry *d, char __use
    if (error < 0)
    return error;

    - return vfs_removexattr(d, kname);
    + return vfs_removexattr(dentry, mnt, kname);
    }

    asmlinkage long
    @@ -461,7 +461,7 @@ sys_removexattr(char __user *path, char
    error = user_path_walk(path, &nd);
    if (error)
    return error;
    - error = removexattr(nd.dentry, name);
    + error = removexattr(nd.dentry, nd.mnt, name);
    path_release(&nd);
    return error;
    }
    @@ -475,7 +475,7 @@ sys_lremovexattr(char __user *path, char
    error = user_path_walk_link(path, &nd);
    if (error)
    return error;
    - error = removexattr(nd.dentry, name);
    + error = removexattr(nd.dentry, nd.mnt, name);
    path_release(&nd);
    return error;
    }
    @@ -492,7 +492,7 @@ sys_fremovexattr(int fd, char __user *na
    return error;
    dentry = f->f_path.dentry;
    audit_inode(NULL, dentry->d_inode);
    - error = removexattr(dentry, name);
    + error = removexattr(dentry, f->f_path.mnt, name);
    fput(f);
    return error;
    }
    --- a/include/linux/xattr.h
    +++ b/include/linux/xattr.h
    @@ -52,7 +52,7 @@ ssize_t vfs_listxattr(struct dentry *d,
    size_t size);
    int vfs_setxattr(struct dentry *, struct vfsmount *, char *, void *, size_t,
    int);
    -int vfs_removexattr(struct dentry *, char *);
    +int vfs_removexattr(struct dentry *, struct vfsmount *, char *);

    ssize_t generic_getxattr(struct dentry *dentry, const char *name, void *buffer, size_t size);
    ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size);
    --
    -
    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:49    [W:2.295 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site