|
@@ -188,7 +188,7 @@ static const match_table_t tokens = {
|
|
|
};
|
|
|
|
|
|
static int
|
|
|
-parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s32 *root,
|
|
|
+parse_options(char *options, kuid_t *uid, kgid_t *gid, int *mode, int *reserved, s32 *root,
|
|
|
int *blocksize, char **prefix, char *volume, unsigned long *mount_opts)
|
|
|
{
|
|
|
char *p;
|
|
@@ -253,13 +253,17 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s
|
|
|
case Opt_setgid:
|
|
|
if (match_int(&args[0], &option))
|
|
|
return 0;
|
|
|
- *gid = option;
|
|
|
+ *gid = make_kgid(current_user_ns(), option);
|
|
|
+ if (!gid_valid(*gid))
|
|
|
+ return 0;
|
|
|
*mount_opts |= SF_SETGID;
|
|
|
break;
|
|
|
case Opt_setuid:
|
|
|
if (match_int(&args[0], &option))
|
|
|
return 0;
|
|
|
- *uid = option;
|
|
|
+ *uid = make_kuid(current_user_ns(), option);
|
|
|
+ if (!uid_valid(*uid))
|
|
|
+ return 0;
|
|
|
*mount_opts |= SF_SETUID;
|
|
|
break;
|
|
|
case Opt_verbose:
|
|
@@ -301,8 +305,8 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent)
|
|
|
int num_bm;
|
|
|
int i, j;
|
|
|
s32 key;
|
|
|
- uid_t uid;
|
|
|
- gid_t gid;
|
|
|
+ kuid_t uid;
|
|
|
+ kgid_t gid;
|
|
|
int reserved;
|
|
|
unsigned long mount_flags;
|
|
|
int tmp_flags; /* fix remount prototype... */
|
|
@@ -527,8 +531,8 @@ affs_remount(struct super_block *sb, int *flags, char *data)
|
|
|
{
|
|
|
struct affs_sb_info *sbi = AFFS_SB(sb);
|
|
|
int blocksize;
|
|
|
- uid_t uid;
|
|
|
- gid_t gid;
|
|
|
+ kuid_t uid;
|
|
|
+ kgid_t gid;
|
|
|
int mode;
|
|
|
int reserved;
|
|
|
int root_block;
|