[PATCH] reiser4: support user namespaces and kuid_t/kgid_t.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is required to compile reiser4 with user namespaces support enabled.

---
 fs/reiser4/plugin/file_plugin_common.c |  4 ++--
 fs/reiser4/plugin/inode_ops.c          |  5 ++---
 fs/reiser4/plugin/item/static_stat.c   | 12 ++++++------
 fs/reiser4/super.h                     |  4 ++--
 4 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/fs/reiser4/plugin/file_plugin_common.c b/fs/reiser4/plugin/file_plugin_common.c
index 1ed9459..f2eaf64 100644
--- a/fs/reiser4/plugin/file_plugin_common.c
+++ b/fs/reiser4/plugin/file_plugin_common.c
@@ -61,7 +61,7 @@ int set_plug_in_inode_common(struct inode *object /* inode to set plugin on */ ,
 
 	object->i_mode = data->mode;
 	/* this should be plugin decision */
-	object->i_uid = current->cred->fsuid;
+	object->i_uid = current_fsuid();
 	object->i_mtime = object->i_atime = object->i_ctime = CURRENT_TIME;
 
 	/* support for BSD style group-id assignment. See mount's manual page
@@ -75,7 +75,7 @@ int set_plug_in_inode_common(struct inode *object /* inode to set plugin on */ ,
 			/* sguid is inherited by sub-directories */
 			object->i_mode |= S_ISGID;
 	} else
-		object->i_gid = current->cred->fsgid;
+		object->i_gid = current_fsgid();
 
 	/* this object doesn't have stat-data yet */
 	reiser4_inode_set_flag(object, REISER4_NO_SD);
diff --git a/fs/reiser4/plugin/inode_ops.c b/fs/reiser4/plugin/inode_ops.c
index 59cebee..9e9497b 100644
--- a/fs/reiser4/plugin/inode_ops.c
+++ b/fs/reiser4/plugin/inode_ops.c
@@ -462,9 +462,8 @@ int reiser4_setattr_common(struct dentry *dentry, struct iattr *attr)
 	 */
 	result = setattr_reserve(reiser4_tree_by_inode(inode));
 	if (!result) {
-		if ((attr->ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid)
-		    || (attr->ia_valid & ATTR_GID
-			&& attr->ia_gid != inode->i_gid)) {
+		if (((attr->ia_valid & ATTR_UID) && !uid_eq(attr->ia_uid, inode->i_uid))
+		    || ((attr->ia_valid & ATTR_GID) && !gid_eq(attr->ia_gid, inode->i_gid))) {
 			result = dquot_transfer(inode, attr) ? -EDQUOT : 0;
 			if (result) {
 				context_set_commit_async(ctx);
diff --git a/fs/reiser4/plugin/item/static_stat.c b/fs/reiser4/plugin/item/static_stat.c
index 80e0cb6..377cf24 100644
--- a/fs/reiser4/plugin/item/static_stat.c
+++ b/fs/reiser4/plugin/item/static_stat.c
@@ -327,8 +327,8 @@ static int present_unix_sd(struct inode *inode /* object being processed */ ,
 
 		sd = (reiser4_unix_stat *) * area;
 
-		inode->i_uid = le32_to_cpu(get_unaligned(&sd->uid));
-		inode->i_gid = le32_to_cpu(get_unaligned(&sd->gid));
+		i_uid_write(inode, le32_to_cpu(get_unaligned(&sd->uid)));
+		i_gid_write(inode, le32_to_cpu(get_unaligned(&sd->gid)));
 		inode->i_atime.tv_sec = le32_to_cpu(get_unaligned(&sd->atime));
 		inode->i_mtime.tv_sec = le32_to_cpu(get_unaligned(&sd->mtime));
 		inode->i_ctime.tv_sec = le32_to_cpu(get_unaligned(&sd->ctime));
@@ -344,8 +344,8 @@ static int present_unix_sd(struct inode *inode /* object being processed */ ,
 
 static int absent_unix_sd(struct inode *inode /* object being processed */ )
 {
-	inode->i_uid = get_super_private(inode->i_sb)->default_uid;
-	inode->i_gid = get_super_private(inode->i_sb)->default_gid;
+	i_uid_write(inode, get_super_private(inode->i_sb)->default_uid);
+	i_gid_write(inode, get_super_private(inode->i_sb)->default_gid);
 	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
 	inode_set_bytes(inode, inode->i_size);
 	/* mark inode as lightweight, so that caller (lookup_common) will
@@ -371,8 +371,8 @@ static int save_unix_sd(struct inode *inode /* object being processed */ ,
 	assert("nikita-644", *area != NULL);
 
 	sd = (reiser4_unix_stat *) * area;
-	put_unaligned(cpu_to_le32(inode->i_uid), &sd->uid);
-	put_unaligned(cpu_to_le32(inode->i_gid), &sd->gid);
+	put_unaligned(cpu_to_le32(i_uid_read(inode)), &sd->uid);
+	put_unaligned(cpu_to_le32(i_gid_read(inode)), &sd->gid);
 	put_unaligned(cpu_to_le32((__u32) inode->i_atime.tv_sec), &sd->atime);
 	put_unaligned(cpu_to_le32((__u32) inode->i_ctime.tv_sec), &sd->ctime);
 	put_unaligned(cpu_to_le32((__u32) inode->i_mtime.tv_sec), &sd->mtime);
diff --git a/fs/reiser4/super.h b/fs/reiser4/super.h
index 58c9efd..46e69fd 100644
--- a/fs/reiser4/super.h
+++ b/fs/reiser4/super.h
@@ -138,13 +138,13 @@ struct reiser4_super_info_data {
 	 * default user id used for light-weight files without their own
 	 * stat-data.
 	 */
-	uid_t default_uid;
+	__u32 default_uid;
 
 	/*
 	 * default group id used for light-weight files without their own
 	 * stat-data.
 	 */
-	gid_t default_gid;
+	__u32 default_gid;
 
 	/* mkfs identifier generated at mkfs time. */
 	__u32 mkfs_id;
-- 
1.8.5.1

--
To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux File System Development]     [Linux BTRFS]     [Linux NFS]     [Linux Filesystems]     [Ext4 Filesystem]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Resources]

  Powered by Linux