Subject: Re: linux-next: build failure after merge of the mm-hotfixes tree

From: Yang Shi <[email-masked]>
Date: Tue, 2 Jul 2024 17:40:55 -0700

On 7/2/24 4:22 PM, Stephen Rothwell wrote:
> Hi Andrew,
>
> On Wed, 3 Jul 2024 08:44:40 +1000 Stephen Rothwell <[email-masked]> wrote:
>> On Mon, 1 Jul 2024 11:15:17 -0700 Yang Shi <[email-masked]> wrote:
>>> On 6/30/24 6:01 PM, Stephen Rothwell wrote:
>>>> On Mon, 1 Jul 2024 10:16:41 +1000 Stephen Rothwell <[email-masked]> wrote:
>>>>> After merging the mm-hotfixes tree, today's linux-next build (powerpc
>>>>> ppc64_defconfig) failed like this:
>>>>>
>>>>> mm/gup.c: In function 'gup_hugepte':
>>>>> mm/gup.c:474:25: error: implicit declaration of function 'try_grab_folio_fast'; did you mean 'try_grab_folio'? [-Werror=implicit-function-declaration]
>>>>>     474 |                 folio = try_grab_folio_fast(page, refs, flags);
>>>>>         |                         ^~~~~~~~~~~~~~~~~~~
>>>>>         |                         try_grab_folio
>>>>> mm/gup.c:474:23: warning: assignment to 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
>>>>>     474 |                 folio = try_grab_folio_fast(page, refs, flags);
>>>>>         |                       ^
>>>>> mm/gup.c: At top level:
>>>>> mm/gup.c:2747:22: error: conflicting types for 'try_grab_folio_fast'; have 'struct folio *(struct page *, int,  unsigned int)'
>>>>>    2747 | static struct folio *try_grab_folio_fast(struct page *page, int refs,
>>>>>         |                      ^~~~~~~~~~~~~~~~~~~
>>>>> mm/gup.c:474:25: note: previous implicit declaration of 'try_grab_folio_fast' with type 'int()'
>>>>>     474 |                 folio = try_grab_folio_fast(page, refs, flags);
>>>>>         |                         ^~~~~~~~~~~~~~~~~~~
>>>>> cc1: some warnings being treated as errors
>>>>>
>>>>> Caused by commit
>>>>>
>>>>>     5f408bfe0d13 ("mm: gup: stop abusing try_grab_folio")
>>>>>
>>>>> I have reverted that commit for today.
>>>> And I also had to revert commit
>>>>
>>>>     52cca85b0ebf ("mm-gup-introduce-memfd_pin_folios-for-pinning-memfd-folios-fix")
>>>>
>>>> from the mm-unstable branch of the mm tree.
>>> The patch attached in this mail should fix the compile error.
>>>
>>> https://lore.kernel.org/linux-mm/[email-masked]/
>> It looks like that patch has been applied to the mm tree instead of the
>> mm-hotfixes tree - as a fix for commit
>>
>>    50ceb37037f3 ("mm: gup: stop abusing try_grab_folio")
> So for today, I have applied the following patch to the mm-hotfixes
> tree merge and stopped reverting
> mm-gup-introduce-memfd_pin_folios-for-pinning-memfd-folios-fix.

Thanks, Stephen. I think Andrew may misread what my patch fixed. I 
emailed him offline. Once he fixed it you should not need this 
workaround anymore.

>
> From: Stephen Rothwell <[email-masked]>
> Date: Wed, 3 Jul 2024 08:52:20 +1000
> Subject: [PATCH] fixup for "mm: gup: stop abusing try_grab_folio"
>
> Signed-off-by: Stephen Rothwell <[email-masked]>
> ---
>   mm/gup.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/mm/gup.c b/mm/gup.c
> index 12c7b41712f7..5f58c95b3ab9 100644
> --- a/mm/gup.c
> +++ b/mm/gup.c
> @@ -437,6 +437,9 @@ static unsigned long hugepte_addr_end(unsigned long addr, unsigned long end,
>   	return (__boundary - 1 < end - 1) ? __boundary : end;
>   }
>   
> +static struct folio *try_grab_folio_fast(struct page *page, int refs,
> +					 unsigned int flags);
> +
>   /*
>    * Returns 1 if succeeded, 0 if failed, -EMLINK if unshare needed.
>    *