shmem: restrict noswap option to initial user namespace
Prevent tmpfs instances mounted in an unprivileged namespaces from evading accounting of locked memory by using the "noswap" mount option. Link: https://lkml.kernel.org/r/20230420-faxen-advokat-40abb4c1a152@brauner Signed-off-by: Christian Brauner <brauner@kernel.org> Reported-by: Hugh Dickins <hughd@google.com> Link: https://lore.kernel.org/lkml/79eae9fe-7818-a65c-89c6-138b55d609a@google.com Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Cc: Adam Manzanares <a.manzanares@samsung.com> Cc: Davidlohr Bueso <dave@stgolabs.net> Cc: Kees Cook <keescook@chromium.org> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Pankaj Raghav <p.raghav@samsung.com> Cc: Yosry Ahmed <yosryahmed@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
0175ab610c
commit
01106e1408
|
@ -3582,6 +3582,10 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param)
|
||||||
ctx->seen |= SHMEM_SEEN_INUMS;
|
ctx->seen |= SHMEM_SEEN_INUMS;
|
||||||
break;
|
break;
|
||||||
case Opt_noswap:
|
case Opt_noswap:
|
||||||
|
if ((fc->user_ns != &init_user_ns) || !capable(CAP_SYS_ADMIN)) {
|
||||||
|
return invalfc(fc,
|
||||||
|
"Turning off swap in unprivileged tmpfs mounts unsupported");
|
||||||
|
}
|
||||||
ctx->noswap = true;
|
ctx->noswap = true;
|
||||||
ctx->seen |= SHMEM_SEEN_NOSWAP;
|
ctx->seen |= SHMEM_SEEN_NOSWAP;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue