Re: [PATCH 2/2] vmalloc: reject vmap with VM_FLUSH_RESET_PERMS

From: Lorenzo Stoakes
Date: Fri Dec 23 2022 - 05:24:32 EST


On Fri, Dec 23, 2022 at 10:27:03AM +0100, Christoph Hellwig wrote:
> VM_FLUSH_RESET_PERMS is just for use with vmalloc as it is tied to freeing
> the underlying pages.
>
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> ---
> mm/vmalloc.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index 9e30f0b3920325..88a644cde9fb12 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -2849,6 +2849,9 @@ void *vmap(struct page **pages, unsigned int count,
>
> might_sleep();
>
> + if (WARN_ON_ONCE(flags & VM_FLUSH_RESET_PERMS))
> + return NULL;
> +

Might it be worth adding a specific vmap mask that explicitly indicates what
flags are permissible on vmap()? Then this could become e.g.:-

if (WARN_ON_ONCE(flags & ~VM_VMAP_PERMITTED_MASK))
return NULL;

And would be self-documenting as to why we are disallowing flags (i.e. they are
not part of the permitted vmap mask).