mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
userns: Convert hugetlbfs to use kuid/kgid where appropriate
Note sysctl_hugetlb_shm_group can only be written in the root user in the initial user namespace, so we can assume sysctl_hugetlb_shm_group is in the initial user namespace. Cc: William Irwin <wli@holomorphy.com> Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
parent
91fa2ccaa8
commit
a0eb3a05a8
@ -42,8 +42,8 @@ static const struct inode_operations hugetlbfs_dir_inode_operations;
|
||||
static const struct inode_operations hugetlbfs_inode_operations;
|
||||
|
||||
struct hugetlbfs_config {
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
kuid_t uid;
|
||||
kgid_t gid;
|
||||
umode_t mode;
|
||||
long nr_blocks;
|
||||
long nr_inodes;
|
||||
@ -785,13 +785,17 @@ hugetlbfs_parse_options(char *options, struct hugetlbfs_config *pconfig)
|
||||
case Opt_uid:
|
||||
if (match_int(&args[0], &option))
|
||||
goto bad_val;
|
||||
pconfig->uid = option;
|
||||
pconfig->uid = make_kuid(current_user_ns(), option);
|
||||
if (!uid_valid(pconfig->uid))
|
||||
goto bad_val;
|
||||
break;
|
||||
|
||||
case Opt_gid:
|
||||
if (match_int(&args[0], &option))
|
||||
goto bad_val;
|
||||
pconfig->gid = option;
|
||||
pconfig->gid = make_kgid(current_user_ns(), option);
|
||||
if (!gid_valid(pconfig->gid))
|
||||
goto bad_val;
|
||||
break;
|
||||
|
||||
case Opt_mode:
|
||||
@ -924,7 +928,9 @@ static struct vfsmount *hugetlbfs_vfsmount;
|
||||
|
||||
static int can_do_hugetlb_shm(void)
|
||||
{
|
||||
return capable(CAP_IPC_LOCK) || in_group_p(sysctl_hugetlb_shm_group);
|
||||
kgid_t shm_group;
|
||||
shm_group = make_kgid(&init_user_ns, sysctl_hugetlb_shm_group);
|
||||
return capable(CAP_IPC_LOCK) || in_group_p(shm_group);
|
||||
}
|
||||
|
||||
struct file *hugetlb_file_setup(const char *name, unsigned long addr,
|
||||
|
@ -954,7 +954,6 @@ config UIDGID_CONVERTED
|
||||
depends on HFS_FS = n
|
||||
depends on HFSPLUS_FS = n
|
||||
depends on HPFS_FS = n
|
||||
depends on HUGETLBFS = n
|
||||
depends on ISO9660_FS = n
|
||||
depends on JFFS2_FS = n
|
||||
depends on JFS_FS = n
|
||||
|
Loading…
Reference in New Issue
Block a user