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

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

userns: Convert befs to use kuid/kgid where appropriate

parent c010d1ff
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ typedef u64 befs_blocknr_t;
 */

typedef struct befs_mount_options {
	gid_t gid;
	uid_t uid;
	kgid_t gid;
	kuid_t uid;
	int use_gid;
	int use_uid;
	int debug;
+19 −8
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include <linux/vfs.h>
#include <linux/parser.h>
#include <linux/namei.h>
#include <linux/sched.h>

#include "befs.h"
#include "btree.h"
@@ -352,9 +353,11 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino)
	 */   

	inode->i_uid = befs_sb->mount_opts.use_uid ?
	    befs_sb->mount_opts.uid : (uid_t) fs32_to_cpu(sb, raw_inode->uid);
		befs_sb->mount_opts.uid :
		make_kuid(&init_user_ns, fs32_to_cpu(sb, raw_inode->uid));
	inode->i_gid = befs_sb->mount_opts.use_gid ?
	    befs_sb->mount_opts.gid : (gid_t) fs32_to_cpu(sb, raw_inode->gid);
		befs_sb->mount_opts.gid :
		make_kgid(&init_user_ns, fs32_to_cpu(sb, raw_inode->gid));

	set_nlink(inode, 1);

@@ -674,10 +677,12 @@ parse_options(char *options, befs_mount_options * opts)
	char *p;
	substring_t args[MAX_OPT_ARGS];
	int option;
	kuid_t uid;
	kgid_t gid;

	/* Initialize options */
	opts->uid = 0;
	opts->gid = 0;
	opts->uid = GLOBAL_ROOT_UID;
	opts->gid = GLOBAL_ROOT_GID;
	opts->use_uid = 0;
	opts->use_gid = 0;
	opts->iocharset = NULL;
@@ -696,23 +701,29 @@ parse_options(char *options, befs_mount_options * opts)
		case Opt_uid:
			if (match_int(&args[0], &option))
				return 0;
			if (option < 0) {
			uid = INVALID_UID;
			if (option >= 0)
				uid = make_kuid(current_user_ns(), option);
			if (!uid_valid(uid)) {
				printk(KERN_ERR "BeFS: Invalid uid %d, "
						"using default\n", option);
				break;
			}
			opts->uid = option;
			opts->uid = uid;
			opts->use_uid = 1;
			break;
		case Opt_gid:
			if (match_int(&args[0], &option))
				return 0;
			if (option < 0) {
			gid = INVALID_GID;
			if (option >= 0)
				gid = make_kgid(current_user_ns(), option);
			if (!gid_valid(gid)) {
				printk(KERN_ERR "BeFS: Invalid gid %d, "
						"using default\n", option);
				break;
			}
			opts->gid = option;
			opts->gid = gid;
			opts->use_gid = 1;
			break;
		case Opt_charset:
+0 −1
Original line number Diff line number Diff line
@@ -936,7 +936,6 @@ config UIDGID_CONVERTED
	depends on AFFS_FS = n
	depends on AFS_FS = n
	depends on AUTOFS4_FS = n
	depends on BEFS_FS = n
	depends on BFS_FS = n
	depends on BTRFS_FS = n
	depends on CEPH_FS = n