Re: [PATCH v2] mm/hugetlb: Fix incorrect error return from hugetlb_reserve_pages()

From: Jason Gunthorpe
Date: Mon Nov 24 2025 - 14:28:17 EST


On Fri, Oct 24, 2025 at 10:42:40AM +0100, Shameer Kolothum wrote:
> The function hugetlb_reserve_pages() returns the number of pages added
> to the reservation map on success and a negative error code on failure
> (e.g. -EINVAL, -ENOMEM). However, in some error paths, it may return -1
> directly.
>
> For example, a failure at:
>
> if (hugetlb_acct_memory(h, gbl_reserve) < 0)
> goto out_put_pages;
>
> results in returning -1 (since add = -1), which may be misinterpreted
> in userspace as -EPERM.
>
> Fix this by explicitly capturing and propagating the return values from
> helper functions, and using -EINVAL for all other failure cases.
>
> Fixes: 986f5f2b4be3 ("mm/hugetlb: make hugetlb_reserve_pages() return nr of entries updated")
> Signed-off-by: Shameer Kolothum <skolothumtho@xxxxxxxxxx>
> ---
> Addressed commenst from v1. Thanks!
> https://lore.kernel.org/linux-mm/20251022102956.245736-1-skolothumtho@xxxxxxxxxx/
> ---
> mm/hugetlb.c | 25 ++++++++++++++++++-------
> 1 file changed, 18 insertions(+), 7 deletions(-)

Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx>

Jason