Re: mm: VM_BUG_ON_PAGE(PageTail(page)) in mbind

From: Andrew Morton
Date: Tue Jan 26 2016 - 15:48:29 EST


On Tue, 26 Jan 2016 22:28:29 +0200 "Kirill A. Shutemov" <kirill@xxxxxxxxxxxxx> wrote:

> The patch below fixes the issue for me, but this bug makes me wounder how
> many bugs like this we have in kernel... :-/
>
> Looks like we are too permissive about which VMA is migratable:
> vma_migratable() filters out VMA by VM_IO and VM_PFNMAP.
> I think VM_DONTEXPAND also correlate with VMA which cannot be migrated.
>
> $ git grep VM_DONTEXPAND drivers | grep -v '\(VM_IO\|VM_PFNMAN\)' | wc -l
> 33
>
> Hm.. :-|
>
> It worth looking on them closely... And I wouldn't be surprised if some
> VMAs without all of these flags are not migratable too.
>
> Sigh.. Any thoughts?

Sigh indeed. I think that both VM_DONTEXPAND and VM_DONTDUMP are
pretty good signs that mbind() should not be mucking with this vma. If
such a policy sometimes results in mbind failing to set a policy then
that's not a huge loss - something runs a bit slower maybe.

I mean, we only really expect mbind() to operate against regular old
anon/pagecache memory, yes?