On Tue, Jun 16, 2015 at 4:10 PM, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > 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 :( Sorry for this, I will send it again by git-sendmail. -- 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