mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-18 11:54:37 +08:00
userns: Convert ubifs to use kuid/kgid
Cc: Artem Bityutskiy <dedekind1@gmail.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
parent
61293ee274
commit
39241beb78
@ -272,8 +272,8 @@ long long ubifs_calc_available(const struct ubifs_info *c, int min_idx_lebs)
|
|||||||
*/
|
*/
|
||||||
static int can_use_rp(struct ubifs_info *c)
|
static int can_use_rp(struct ubifs_info *c)
|
||||||
{
|
{
|
||||||
if (current_fsuid() == c->rp_uid || capable(CAP_SYS_RESOURCE) ||
|
if (uid_eq(current_fsuid(), c->rp_uid) || capable(CAP_SYS_RESOURCE) ||
|
||||||
(c->rp_gid != 0 && in_group_p(c->rp_gid)))
|
(!gid_eq(c->rp_gid, GLOBAL_ROOT_GID) && in_group_p(c->rp_gid)))
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -243,8 +243,8 @@ void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode)
|
|||||||
printk(KERN_ERR "\tsize %llu\n",
|
printk(KERN_ERR "\tsize %llu\n",
|
||||||
(unsigned long long)i_size_read(inode));
|
(unsigned long long)i_size_read(inode));
|
||||||
printk(KERN_ERR "\tnlink %u\n", inode->i_nlink);
|
printk(KERN_ERR "\tnlink %u\n", inode->i_nlink);
|
||||||
printk(KERN_ERR "\tuid %u\n", (unsigned int)inode->i_uid);
|
printk(KERN_ERR "\tuid %u\n", (unsigned int)i_uid_read(inode));
|
||||||
printk(KERN_ERR "\tgid %u\n", (unsigned int)inode->i_gid);
|
printk(KERN_ERR "\tgid %u\n", (unsigned int)i_gid_read(inode));
|
||||||
printk(KERN_ERR "\tatime %u.%u\n",
|
printk(KERN_ERR "\tatime %u.%u\n",
|
||||||
(unsigned int)inode->i_atime.tv_sec,
|
(unsigned int)inode->i_atime.tv_sec,
|
||||||
(unsigned int)inode->i_atime.tv_nsec);
|
(unsigned int)inode->i_atime.tv_nsec);
|
||||||
|
@ -469,8 +469,8 @@ static void pack_inode(struct ubifs_info *c, struct ubifs_ino_node *ino,
|
|||||||
ino->ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec);
|
ino->ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec);
|
||||||
ino->mtime_sec = cpu_to_le64(inode->i_mtime.tv_sec);
|
ino->mtime_sec = cpu_to_le64(inode->i_mtime.tv_sec);
|
||||||
ino->mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec);
|
ino->mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec);
|
||||||
ino->uid = cpu_to_le32(inode->i_uid);
|
ino->uid = cpu_to_le32(i_uid_read(inode));
|
||||||
ino->gid = cpu_to_le32(inode->i_gid);
|
ino->gid = cpu_to_le32(i_gid_read(inode));
|
||||||
ino->mode = cpu_to_le32(inode->i_mode);
|
ino->mode = cpu_to_le32(inode->i_mode);
|
||||||
ino->flags = cpu_to_le32(ui->flags);
|
ino->flags = cpu_to_le32(ui->flags);
|
||||||
ino->size = cpu_to_le64(ui->ui_size);
|
ino->size = cpu_to_le64(ui->ui_size);
|
||||||
|
@ -611,8 +611,8 @@ int ubifs_read_superblock(struct ubifs_info *c)
|
|||||||
c->fanout = le32_to_cpu(sup->fanout);
|
c->fanout = le32_to_cpu(sup->fanout);
|
||||||
c->lsave_cnt = le32_to_cpu(sup->lsave_cnt);
|
c->lsave_cnt = le32_to_cpu(sup->lsave_cnt);
|
||||||
c->rp_size = le64_to_cpu(sup->rp_size);
|
c->rp_size = le64_to_cpu(sup->rp_size);
|
||||||
c->rp_uid = le32_to_cpu(sup->rp_uid);
|
c->rp_uid = make_kuid(&init_user_ns, le32_to_cpu(sup->rp_uid));
|
||||||
c->rp_gid = le32_to_cpu(sup->rp_gid);
|
c->rp_gid = make_kgid(&init_user_ns, le32_to_cpu(sup->rp_gid));
|
||||||
sup_flags = le32_to_cpu(sup->flags);
|
sup_flags = le32_to_cpu(sup->flags);
|
||||||
if (!c->mount_opts.override_compr)
|
if (!c->mount_opts.override_compr)
|
||||||
c->default_compr = le16_to_cpu(sup->default_compr);
|
c->default_compr = le16_to_cpu(sup->default_compr);
|
||||||
|
@ -130,8 +130,8 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum)
|
|||||||
|
|
||||||
inode->i_flags |= (S_NOCMTIME | S_NOATIME);
|
inode->i_flags |= (S_NOCMTIME | S_NOATIME);
|
||||||
set_nlink(inode, le32_to_cpu(ino->nlink));
|
set_nlink(inode, le32_to_cpu(ino->nlink));
|
||||||
inode->i_uid = le32_to_cpu(ino->uid);
|
i_uid_write(inode, le32_to_cpu(ino->uid));
|
||||||
inode->i_gid = le32_to_cpu(ino->gid);
|
i_gid_write(inode, le32_to_cpu(ino->gid));
|
||||||
inode->i_atime.tv_sec = (int64_t)le64_to_cpu(ino->atime_sec);
|
inode->i_atime.tv_sec = (int64_t)le64_to_cpu(ino->atime_sec);
|
||||||
inode->i_atime.tv_nsec = le32_to_cpu(ino->atime_nsec);
|
inode->i_atime.tv_nsec = le32_to_cpu(ino->atime_nsec);
|
||||||
inode->i_mtime.tv_sec = (int64_t)le64_to_cpu(ino->mtime_sec);
|
inode->i_mtime.tv_sec = (int64_t)le64_to_cpu(ino->mtime_sec);
|
||||||
|
@ -1426,8 +1426,8 @@ struct ubifs_info {
|
|||||||
|
|
||||||
long long rp_size;
|
long long rp_size;
|
||||||
long long report_rp_size;
|
long long report_rp_size;
|
||||||
uid_t rp_uid;
|
kuid_t rp_uid;
|
||||||
gid_t rp_gid;
|
kgid_t rp_gid;
|
||||||
|
|
||||||
/* The below fields are used only during mounting and re-mounting */
|
/* The below fields are used only during mounting and re-mounting */
|
||||||
unsigned int empty:1;
|
unsigned int empty:1;
|
||||||
|
@ -939,7 +939,6 @@ config UIDGID_CONVERTED
|
|||||||
depends on NFSD = n
|
depends on NFSD = n
|
||||||
depends on NFS_FS = n
|
depends on NFS_FS = n
|
||||||
depends on OCFS2_FS = n
|
depends on OCFS2_FS = n
|
||||||
depends on UBIFS_FS = n
|
|
||||||
depends on UDF_FS = n
|
depends on UDF_FS = n
|
||||||
depends on UFS_FS = n
|
depends on UFS_FS = n
|
||||||
depends on XFS_FS = n
|
depends on XFS_FS = n
|
||||||
|
Loading…
Reference in New Issue
Block a user