Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e0a04cffa4e97e1e53625e40e70895c882e8972f Commit: e0a04cffa4e97e1e53625e40e70895c882e8972f Parent: 4a76ef036ac415c28d1adbaf2b7a74040b84d4c2 Author: Nick Piggin <[EMAIL PROTECTED]> AuthorDate: Wed Feb 14 12:39:01 2007 +0100 Committer: Linus Torvalds <[EMAIL PROTECTED]> CommitDate: Thu Feb 15 09:57:03 2007 -0800
[PATCH] mincore: vma crossing fix My mincore also forgot about crossing vmas. Signed-off-by: Nick Piggin <[EMAIL PROTECTED]> Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]> --- mm/mincore.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) diff --git a/mm/mincore.c b/mm/mincore.c index 9c1d0a4..5efe0de 100644 --- a/mm/mincore.c +++ b/mm/mincore.c @@ -77,8 +77,16 @@ static long do_mincore(unsigned long addr, unsigned char *vec, unsigned long pag * PTE array for our address. */ nr = PTRS_PER_PTE - ((addr >> PAGE_SHIFT) & (PTRS_PER_PTE-1)); - if (nr > pages) - nr = pages; + + /* + * Don't overrun this vma + */ + nr = min(nr, (vma->vm_end - addr) >> PAGE_SHIFT); + + /* + * Don't return more than the caller asked for + */ + nr = min(nr, pages); pgd = pgd_offset(vma->vm_mm, addr); if (pgd_none_or_clear_bad(pgd)) - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html