summaryrefslogtreecommitdiffstats
path: root/fs/reiserfs/xattr.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-09 07:34:53 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-09 07:34:53 +0200
commit38a4671cad3f0d277cf48445b49e42a475ebfb6a (patch)
tree7348f3dd5f4e1bec39758dcff748a9dcbbf3430c /fs/reiserfs/xattr.c
parentpcmcia/trivial: at91_cf: fix checkpatch error (diff)
parentLinux 3.10-rc5 (diff)
downloadlinux-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.c14
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. */