Re: [PATCH] mm: Prevent mapping slab pages to userspace

From: Kees Cook
Date: Fri Jan 25 2019 - 13:44:57 EST


On Sat, Jan 26, 2019 at 6:38 AM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
> It's never appropriate to map a page allocated by SLAB into userspace.
> A buggy device driver might try this, or an attacker might be able to
> find a way to make it happen.
>
> Signed-off-by: Matthew Wilcox <willy@xxxxxxxxxxxxx>
> ---
> mm/memory.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index e11ca9dd823f..ce8c90b752be 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -1451,7 +1451,7 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
> spinlock_t *ptl;
>
> retval = -EINVAL;
> - if (PageAnon(page))
> + if (PageAnon(page) || PageSlab(page))

Are there other types that should not get mapped? (Or better yet, is
there a whitelist of those that are okay to be mapped?)

Either way, this sounds good. :)

Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>

-Kees

> goto out;
> retval = -ENOMEM;
> flush_dcache_page(page);
> --
> 2.20.1
>


--
Kees Cook