diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-06-09 07:34:53 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-06-09 07:34:53 +0200 |
commit | 38a4671cad3f0d277cf48445b49e42a475ebfb6a (patch) | |
tree | 7348f3dd5f4e1bec39758dcff748a9dcbbf3430c /fs/reiserfs/xattr.c | |
parent | pcmcia/trivial: at91_cf: fix checkpatch error (diff) | |
parent | Linux 3.10-rc5 (diff) | |
download | linux-38a4671cad3f0d277cf48445b49e42a475ebfb6a.tar.xz linux-38a4671cad3f0d277cf48445b49e42a475ebfb6a.zip |
Merge 3.10-rc5 into char-misc-next
Diffstat (limited to 'fs/reiserfs/xattr.c')
-rw-r--r-- | fs/reiserfs/xattr.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index 4cce1d9552fb..821bcf70e467 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c @@ -318,7 +318,19 @@ static int delete_one_xattr(struct dentry *dentry, void *data) static int chown_one_xattr(struct dentry *dentry, void *data) { struct iattr *attrs = data; - return reiserfs_setattr(dentry, attrs); + int ia_valid = attrs->ia_valid; + int err; + + /* + * We only want the ownership bits. Otherwise, we'll do + * things like change a directory to a regular file if + * ATTR_MODE is set. + */ + attrs->ia_valid &= (ATTR_UID|ATTR_GID); + err = reiserfs_setattr(dentry, attrs); + attrs->ia_valid = ia_valid; + + return err; } /* No i_mutex, but the inode is unconnected. */ |