On Tue, Jun 16, 2015 at 03:12:01PM -0700, Jovi Zhangwei wrote: > commit 8e76d4eecf7afeec9328e21cd5880e281838d0d6 upstream. > > Jovi Zhangwei reported the following problem > > Below kernel vm bug can be triggered by tcpdump which mmaped a lot of pages > with GFP_COMP flag. > > [Mon May 25 05:29:33 2015] page:ffffea0015414000 count:66 mapcount:1 mapping: > (null) index:0x0 > [Mon May 25 05:29:33 2015] flags: 0x20047580004000(head) > [Mon May 25 05:29:33 2015] page dumped because: VM_BUG_ON_PAGE(compound_order > (page) && !PageTransHuge(page)) > [Mon May 25 05:29:33 2015] ------------[ cut here ]------------ > [Mon May 25 05:29:33 2015] kernel BUG at mm/migrate.c:1661! > [Mon May 25 05:29:33 2015] invalid opcode: 0000 [#1] SMP > > In this case it was triggered by running tcpdump but it's not necessary > reproducible on all systems. > > sudo tcpdump -i bond0.100 'tcp port 4242' -c 100000000000 -w 4242.pcap > > Compound pages cannot be migrated and it was not expected that such pages > be marked for NUMA balancing. This did not take into account that drivers > such as net/packet/af_packet.c may insert compound pages into userspace > with vm_insert_page. This patch tells the NUMA balancing protection > scanner to skip all VM_MIXEDMAP mappings which avoids the possibility that > compound pages are marked for migration. > > Signed-off-by: Mel Gorman <mgorman@xxxxxxx> > [jovi: Backported to 3.18: adjust context] > Signed-off-by: Jovi Zhangwei <jovi@xxxxxxxxxxxxxx> > Reported-by: Jovi Zhangwei <jovi@xxxxxxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxx> > Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > --- > kernel/sched/fair.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index ef2b104..2246a36 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -1979,8 +1979,10 @@ void task_numa_work(struct callback_head *work) > vma = mm->mmap; > } > for (; vma; vma = vma->vm_next) { > - if (!vma_migratable(vma) || !vma_policy_mof(vma)) > + if (!vma_migratable(vma) || !vma_policy_mof(vma) || > + is_vm_hugetlb_page(vma) || (vma->vm_flags & VM_MIXEDMAP)) { > continue; > + } Patch is corrupted :( -- 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