Re: [PATCH] mm: remove out-dated document of __GFP_NOFAIL

From: Wei Yang

Date: Thu Aug 27 2026 - 03:50:38 EST


On Thu, Aug 27, 2026 at 09:35:26AM +0200, Vlastimil Babka (SUSE) wrote:
>On 8/27/26 5:05 AM, Wei Yang wrote:
>> Commit ee040cbd6e48 ("mm/page_alloc: don't warn about large allocations
>> with __GFP_NOFAIL") remove a warning on allocating large folio with
>> __GFP_NOFAIL, which is adjusted by commit 903edea6c53f ("mm: warn about
>> illegal __GFP_NOFAIL usage in a more appropriate location and manner").
>
>"which is adjusted by commit" sounds as 903edea6c53f came later than
>ee040cbd6e48, but it's the opposite. Maybe say "which was placed there"?
>

Got it.

>> While in that commit, it also documented this behavior which is
>> out-dated now.
>>
>> Adjust the document to align to current code, and adjust the comment
>> while at it.
>>
>> Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx>
>> Cc: Baokun Li <libaokun1@xxxxxxxxxx>
>> ---
>> include/linux/gfp_types.h | 2 --
>> mm/page_alloc.c | 2 +-
>> 2 files changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/include/linux/gfp_types.h b/include/linux/gfp_types.h
>> index 190191411009..24fde8eb73df 100644
>> --- a/include/linux/gfp_types.h
>> +++ b/include/linux/gfp_types.h
>> @@ -243,8 +243,6 @@ enum {
>> * used only when there is no reasonable failure policy) but it is
>> * definitely preferable to use the flag rather than opencode endless
>> * loop around allocator.
>> - * Allocating pages from the buddy with __GFP_NOFAIL and order > 1 is
>> - * not supported. Please consider using kvmalloc() instead.
>
>I'm not sure if we want to simply remove the lines, or rather say it's
>discouraged (instead of not supported) and still suggest kvmalloc() if
>possible.
>

Reasonable.

As mentioned in [1], kvmalloc() maybe not suitable for some cases, I would
suggest below change.

* Allocating pages from the buddy with __GFP_NOFAIL and order > 1 is
* discouraged. Please consider using kvmalloc() instead if possible.

Or, you prefer only s/supported/discouraged/ ?

[1]: https://lore.kernel.org/all/aQTHMI3t5mNXp0M1@xxxxxxxxxxxxxxxxxxxx

>> */
>> #define __GFP_IO ((__force gfp_t)___GFP_IO)
>> #define __GFP_FS ((__force gfp_t)___GFP_FS)
>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
>> index ab385bc252cc..146f7e0a9462 100644
>> --- a/mm/page_alloc.c
>> +++ b/mm/page_alloc.c
>> @@ -4804,7 +4804,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
>>
>> if (unlikely(nofail)) {
>> /*
>> - * Also we don't support __GFP_NOFAIL without __GFP_DIRECT_RECLAIM,
>> + * We don't support __GFP_NOFAIL without __GFP_DIRECT_RECLAIM,
>> * otherwise, we may result in lockup.
>> */
>> WARN_ON_ONCE(!can_direct_reclaim);

--
Wei Yang
Help you, Help me