Messages in this thread Patch in this message | | | Date | Sat, 10 Sep 2005 13:58:49 +0200 | From | "Andi Kleen" <> | Subject | [1/3] {PREFIX:-x86_64}: Fix MPOL_F_VERIFY |
| |
Fix MPOL_F_VERIFY
There was a pretty bad bug in there that the code would always check the full VMA, not the range the user requested.
When the VMA to be checked was merged with the previous VMA this could lead to spurious failures.
Index: linux-2.6.13-work/mm/mempolicy.c =================================================================== --- linux-2.6.13-work.orig/mm/mempolicy.c +++ linux-2.6.13-work/mm/mempolicy.c @@ -338,8 +338,13 @@ check_range(struct mm_struct *mm, unsign if (prev && prev->vm_end < vma->vm_start) return ERR_PTR(-EFAULT); if ((flags & MPOL_MF_STRICT) && !is_vm_hugetlb_page(vma)) { + unsigned long endvma = vma->vm_end; + if (endvma > end) + endvma = end; + if (vma->vm_start > start) + start = vma->vm_start; err = check_pgd_range(vma->vm_mm, - vma->vm_start, vma->vm_end, nodes); + start, endvma, nodes); if (err) { first = ERR_PTR(err); break; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |