On Sun, 16 Feb 2014 15:59:45 +0100 Daniel Borkmann <dborkman@xxxxxxxxxx> wrote: > Daniel Borkmann reported a bug (stack trace above) with VM_BUG_ON > assertions failing where munlock_vma_pages_range() thinks it's > unexpectedly in the middle of a THP page. This can be reproduced > with default config since 3.11 kernels. A reproducer can be found > in the kernel's selftest directory for networking by running > ./psock_tpacket. > > The problem is that an order=2 compound page (allocated by > alloc_one_pg_vec_page() is part of the munlocked VM_MIXEDMAP > vma (mapped by packet_mmap()) and mistaken for a THP page and > assumed to be order=9. > > The checks for THP in munlock came with commit ff6a6da60b89 ("mm: > accelerate munlock() treatment of THP pages"), i.e. since 3.9, > but did not trigger a bug. It just makes munlock_vma_pages_range() > skip such compound pages until the next 512-pages-aligned page, > when it encounters a head page. This is however not a problem > for vma's where mlocking has no effect anyway, but it can distort > the accounting. > > Since commit 7225522bb ("mm: munlock: batch non-THP page isolation > and munlock+putback using pagevec") this can trigger a VM_BUG_ON > in PageTransHuge() check. > > This patch fixes the issue by adding VM_MIXEDMAP flag to VM_SPECIAL, > a list of flags that make vma's non-mlockable and non-mergeable. > The reasoning is that VM_MIXEDMAP vma's are similar to VM_PFNMAP, > which is already on the VM_SPECIAL list, and both are intended > for non-LRU pages where mlocking makes no sense anyway. Related > Lkml discussion can be found in [2]. > > Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx> > Reported-by: Daniel Borkmann <dborkman@xxxxxxxxxx> > Tested-by: Daniel Borkmann <dborkman@xxxxxxxxxx> I'll add your signed-of-by: here. As per Documentation/SubmittingPatches 12) (c) ;) > Took the liberty to resubmit it, as people hit that on distribution > kernels; tested and it looks to fix the issue. hm, I wonder why I missed this. -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html