Commit-ID: 7c8fa4f04ab956076605422d5ed37410893a8a73 Gitweb: http://git.kernel.org/tip/7c8fa4f04ab956076605422d5ed37410893a8a73 Author: Sonny Rao <sonnyrao@xxxxxxxxxx> AuthorDate: Fri, 10 Jul 2009 18:13:13 -0500 Committer: Ingo Molnar <mingo@xxxxxxx> CommitDate: Sat, 11 Jul 2009 10:18:45 +0200 futexes: Fix infinite loop in get_futex_key() on huge page get_futex_key() can infinitely loop if it is called on a virtual address that is within a huge page but not aligned to the beginning of that page. The call to get_user_pages_fast will return the struct page for a sub-page within the huge page and the check for page->mapping will always fail. The fix is to call compound_head on the page before checking that it's mapped. Signed-off-by: Sonny Rao <sonnyrao@xxxxxxxxxx> Cc: stable@xxxxxxxxxx Cc: anton@xxxxxxxxx Cc: rajamony@xxxxxxxxxx Cc: speight@xxxxxxxxxx Cc: mstephen@xxxxxxxxxx Cc: grimm@xxxxxxxxxx Cc: mikey@xxxxxxxxxxxxxxxxx LKML-Reference: <20090710231313.GA23572@xxxxxxxxxx> Signed-off-by: Ingo Molnar <mingo@xxxxxxx> --- kernel/futex.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/kernel/futex.c b/kernel/futex.c index 794c862..0672ff8 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -247,6 +247,7 @@ again: if (err < 0) return err; + page = compound_head(page); lock_page(page); if (!page->mapping) { unlock_page(page); -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |