Re: [syzbot] WARNING in follow_hugetlb_page

Minchan Kim
2022-05-14T01:54:26Z

On Fri, May 13, 2022 at 04:19:10PM -0700, Andrew Morton wrote:
> On Fri, 13 May 2022 15:48:15 -0700 Mike Kravetz <mike.kravetz@oracle.com> wrote:
>
> > On 5/13/22 11:09, Mike Kravetz wrote:
> > > On 5/13/22 10:26, Andrew Morton wrote:
> > >> On Fri, 13 May 2022 09:43:24 -0700 syzbot <syzbot+acf65ca584991f3cc447@syzkaller.appspotmail.com> wrote:
> > >>
> > >>> syzbot has found a reproducer for the following issue on:
> > >>
> > >> Thanks.
> > >>
> > >>> HEAD commit: 1e1b28b936ae Add linux-next specific files for 20220513
> > >>> git tree: linux-next
> > >>> console+strace: https://syzkaller.appspot.com/x/log.txt?x=174ae715f00000
> > >>> kernel config: https://syzkaller.appspot.com/x/.config?x=e4eb3c0c4b289571
> > >>> dashboard link: https://syzkaller.appspot.com/bug?extid=acf65ca584991f3cc447
> > >>> compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2
> > >>> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=11531766f00000
> > >>> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=16ce5a9ef00000
> > >>>
> > >>> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> > >>> Reported-by: syzbot+acf65ca584991f3cc447@syzkaller.appspotmail.com
> > >>>
> > >>> ------------[ cut here ]------------
> > >>> WARNING: CPU: 1 PID: 3611 at mm/hugetlb.c:6250 follow_hugetlb_page+0x1326/0x1c80 mm/hugetlb.c:6250
> > >>
> > >> The try_grab_folio() added by 822951d84684d ("mm/hugetlb: Use
> > >> try_grab_folio() instead of try_grab_compound_head()"). That commit
> > >> has been there over a month so I guess it's something else. Does
> > >> someone have the time to bisect?
> > >
> > > I can recreate in my 'easy to debug' environment, so I can bisect in
> > > parallel with other things I need to do today.
> > >
> >
> > I isolated this to Minchan Kim's "mm: fix is_pinnable_page against on cma
> > page". Yes, the fat finger fix is in next-20220513.
> >
> > I don't have time to analyze right now, but can confirm that in the
> > reproducer is_pinnable_page is returning false after this change when it
> > previously returned true.
>
> OK, thanks, I dropped mm-fix-is_pinnable_page-against-on-cma-page.patch

Seems like bug of the patch v5 due to change of this

if (mt & (MIGRATE_CMA | MIGRATE_ISOLATE))

The migration type is not bit type so it shold be

if (mt == MIGRATE_CMA || mt == MIGRATE_ISOLATE)

Ccing just in case if I miss other thing for HugeTLB