[patch] hugetlb: correct page offset index for sharing pmd

From: Hillf Danton
Date: Fri Aug 03 2012 - 08:56:40 EST


The computation of page offset index is open coded, and incorrect, to
be used in scanning prio tree, as huge page offset is required, and is
fixed with the well defined routine.

Signed-off-by: Hillf Danton <dhillf@xxxxxxxxx>
---

--- a/arch/x86/mm/hugetlbpage.c Fri Aug 3 20:34:58 2012
+++ b/arch/x86/mm/hugetlbpage.c Fri Aug 3 20:40:16 2012
@@ -72,12 +72,15 @@ static void huge_pmd_share(struct mm_str
if (!vma_shareable(vma, addr))
return;

+ idx = linear_page_index(vma, addr);
+
mutex_lock(&mapping->i_mmap_mutex);
vma_prio_tree_foreach(svma, &iter, &mapping->i_mmap, idx, idx) {
if (svma == vma)
continue;

- saddr = page_table_shareable(svma, vma, addr, idx);
+ saddr = page_table_shareable(svma, vma, addr,
+ idx * (PMD_SIZE/PAGE_SIZE));
if (saddr) {
spte = huge_pte_offset(svma->vm_mm, saddr);
if (spte) {
--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/