Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0eb3a05 authored by Eric W. Biederman's avatar Eric W. Biederman
Browse files

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: default avatarSerge Hallyn <serge.hallyn@canonical.com>
Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
parent 91fa2cca
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -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,
+0 −1
Original line number Diff line number Diff line
@@ -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