Re: [PATCH] mm/page_alloc: Fix __alloc_size attribute for alloc_pages_exact_nid

From: Kees Cook
Date: Tue Dec 14 2021 - 12:06:25 EST


On Tue, Dec 14, 2021 at 05:21:23PM +0100, Thibaut Sautereau wrote:
> From: Thibaut Sautereau <thibaut.sautereau@xxxxxxxxxxx>
>
> The second parameter of alloc_pages_exact_nid is the one indicating the
> size of memory pointed by the returned pointer.
>
> Fixes: abd58f38dfb4 ("mm/page_alloc: add __alloc_size attributes for better bounds checking")
> Cc: Daniel Micay <danielmicay@xxxxxxxxx>
> Cc: Kees Cook <keescook@xxxxxxxxxxxx>
> Cc: Levente Polyak <levente@xxxxxxxxxxxxxxxxx>
> Signed-off-by: Thibaut Sautereau <thibaut.sautereau@xxxxxxxxxxx>

Thanks! Andrew, can you take this?

Acked-by: Kees Cook <keescook@xxxxxxxxxxxx>

-Kees

> ---
> include/linux/gfp.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/gfp.h b/include/linux/gfp.h
> index b976c4177299..8fcc38467af6 100644
> --- a/include/linux/gfp.h
> +++ b/include/linux/gfp.h
> @@ -624,7 +624,7 @@ extern unsigned long get_zeroed_page(gfp_t gfp_mask);
>
> void *alloc_pages_exact(size_t size, gfp_t gfp_mask) __alloc_size(1);
> void free_pages_exact(void *virt, size_t size);
> -__meminit void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask) __alloc_size(1);
> +__meminit void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask) __alloc_size(2);
>
> #define __get_free_page(gfp_mask) \
> __get_free_pages((gfp_mask), 0)
> --
> 2.34.1
>

--
Kees Cook