diff options
Diffstat (limited to 'fs/autofs4/inode.c')
| -rw-r--r-- | fs/autofs4/inode.c | 24 | 
1 files changed, 15 insertions, 9 deletions
diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c index 8a4fed8ead3..b104726e2d0 100644 --- a/fs/autofs4/inode.c +++ b/fs/autofs4/inode.c @@ -36,8 +36,8 @@ struct autofs_info *autofs4_new_ino(struct autofs_sb_info *sbi)  void autofs4_clean_ino(struct autofs_info *ino)  { -	ino->uid = 0; -	ino->gid = 0; +	ino->uid = GLOBAL_ROOT_UID; +	ino->gid = GLOBAL_ROOT_GID;  	ino->last_used = jiffies;  } @@ -79,10 +79,12 @@ static int autofs4_show_options(struct seq_file *m, struct dentry *root)  		return 0;  	seq_printf(m, ",fd=%d", sbi->pipefd); -	if (root_inode->i_uid != 0) -		seq_printf(m, ",uid=%u", root_inode->i_uid); -	if (root_inode->i_gid != 0) -		seq_printf(m, ",gid=%u", root_inode->i_gid); +	if (!uid_eq(root_inode->i_uid, GLOBAL_ROOT_UID)) +		seq_printf(m, ",uid=%u", +			from_kuid_munged(&init_user_ns, root_inode->i_uid)); +	if (!gid_eq(root_inode->i_gid, GLOBAL_ROOT_GID)) +		seq_printf(m, ",gid=%u", +			from_kgid_munged(&init_user_ns, root_inode->i_gid));  	seq_printf(m, ",pgrp=%d", sbi->oz_pgrp);  	seq_printf(m, ",timeout=%lu", sbi->exp_timeout/HZ);  	seq_printf(m, ",minproto=%d", sbi->min_proto); @@ -126,7 +128,7 @@ static const match_table_t tokens = {  	{Opt_err, NULL}  }; -static int parse_options(char *options, int *pipefd, uid_t *uid, gid_t *gid, +static int parse_options(char *options, int *pipefd, kuid_t *uid, kgid_t *gid,  		pid_t *pgrp, unsigned int *type, int *minproto, int *maxproto)  {  	char *p; @@ -159,12 +161,16 @@ static int parse_options(char *options, int *pipefd, uid_t *uid, gid_t *gid,  		case Opt_uid:  			if (match_int(args, &option))  				return 1; -			*uid = option; +			*uid = make_kuid(current_user_ns(), option); +			if (!uid_valid(*uid)) +				return 1;  			break;  		case Opt_gid:  			if (match_int(args, &option))  				return 1; -			*gid = option; +			*gid = make_kgid(current_user_ns(), option); +			if (!gid_valid(*gid)) +				return 1;  			break;  		case Opt_pgrp:  			if (match_int(args, &option))  |