.. | .. |
---|
3424 | 3424 | unsigned long long size; |
---|
3425 | 3425 | char *rest; |
---|
3426 | 3426 | int opt; |
---|
| 3427 | + kuid_t kuid; |
---|
| 3428 | + kgid_t kgid; |
---|
3427 | 3429 | |
---|
3428 | 3430 | opt = fs_parse(fc, shmem_fs_parameters, param, &result); |
---|
3429 | 3431 | if (opt < 0) |
---|
.. | .. |
---|
3459 | 3461 | ctx->mode = result.uint_32 & 07777; |
---|
3460 | 3462 | break; |
---|
3461 | 3463 | case Opt_uid: |
---|
3462 | | - ctx->uid = make_kuid(current_user_ns(), result.uint_32); |
---|
3463 | | - if (!uid_valid(ctx->uid)) |
---|
| 3464 | + kuid = make_kuid(current_user_ns(), result.uint_32); |
---|
| 3465 | + if (!uid_valid(kuid)) |
---|
3464 | 3466 | goto bad_value; |
---|
| 3467 | + |
---|
| 3468 | + /* |
---|
| 3469 | + * The requested uid must be representable in the |
---|
| 3470 | + * filesystem's idmapping. |
---|
| 3471 | + */ |
---|
| 3472 | + if (!kuid_has_mapping(fc->user_ns, kuid)) |
---|
| 3473 | + goto bad_value; |
---|
| 3474 | + |
---|
| 3475 | + ctx->uid = kuid; |
---|
3465 | 3476 | break; |
---|
3466 | 3477 | case Opt_gid: |
---|
3467 | | - ctx->gid = make_kgid(current_user_ns(), result.uint_32); |
---|
3468 | | - if (!gid_valid(ctx->gid)) |
---|
| 3478 | + kgid = make_kgid(current_user_ns(), result.uint_32); |
---|
| 3479 | + if (!gid_valid(kgid)) |
---|
3469 | 3480 | goto bad_value; |
---|
| 3481 | + |
---|
| 3482 | + /* |
---|
| 3483 | + * The requested gid must be representable in the |
---|
| 3484 | + * filesystem's idmapping. |
---|
| 3485 | + */ |
---|
| 3486 | + if (!kgid_has_mapping(fc->user_ns, kgid)) |
---|
| 3487 | + goto bad_value; |
---|
| 3488 | + |
---|
| 3489 | + ctx->gid = kgid; |
---|
3470 | 3490 | break; |
---|
3471 | 3491 | case Opt_huge: |
---|
3472 | 3492 | ctx->huge = result.uint_32; |
---|
.. | .. |
---|
4100 | 4120 | .name = "tmpfs", |
---|
4101 | 4121 | .init_fs_context = ramfs_init_fs_context, |
---|
4102 | 4122 | .parameters = ramfs_fs_parameters, |
---|
4103 | | - .kill_sb = kill_litter_super, |
---|
| 4123 | + .kill_sb = ramfs_kill_sb, |
---|
4104 | 4124 | .fs_flags = FS_USERNS_MOUNT, |
---|
4105 | 4125 | }; |
---|
4106 | 4126 | |
---|