thp: fix interleaving for transparent hugepages
authorAndi Kleen <[email protected]>
Fri, 25 Feb 2011 22:44:28 +0000 (14:44 -0800)
committerLinus Torvalds <[email protected]>
Fri, 25 Feb 2011 23:07:37 +0000 (15:07 -0800)
The THP code didn't pass the correct interleaving shift to the memory
policy code.  Fix this here by adjusting for the order.

Signed-off-by: Andi Kleen <[email protected]>
Reviewed-by: Christoph Lameter <[email protected]>
Acked-by: Andrea Arcangeli <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/mempolicy.c

index 368fc9d23610eb57dc2359b1aba57d9458616a31..49355a970be2e4c6d68fcd56e8c2a656ed3511eb 100644 (file)
@@ -1830,7 +1830,7 @@ alloc_pages_vma(gfp_t gfp, int order, struct vm_area_struct *vma,
        if (unlikely(pol->mode == MPOL_INTERLEAVE)) {
                unsigned nid;
 
-               nid = interleave_nid(pol, vma, addr, PAGE_SHIFT);
+               nid = interleave_nid(pol, vma, addr, PAGE_SHIFT + order);
                mpol_cond_put(pol);
                page = alloc_page_interleave(gfp, order, nid);
                put_mems_allowed();