From c49180f81a948017abf8e67d50c554c6bdb00b57 Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Mon, 1 Aug 2005 21:11:42 -0700 Subject: [PATCH] --- yaml --- r: 5580 b: refs/heads/master c: 690dbe1ced143876d8fa56b72310738dbe079d0a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/memory.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a17515affae3..73541fae3acb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 74f9c9c258249fba3e2e78f70691528426a6c010 +refs/heads/master: 690dbe1ced143876d8fa56b72310738dbe079d0a diff --git a/trunk/mm/memory.c b/trunk/mm/memory.c index 4e1c673784db..2405289dfdf8 100644 --- a/trunk/mm/memory.c +++ b/trunk/mm/memory.c @@ -910,9 +910,13 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, pud = pud_offset(pgd, pg); BUG_ON(pud_none(*pud)); pmd = pmd_offset(pud, pg); - BUG_ON(pmd_none(*pmd)); + if (pmd_none(*pmd)) + return i ? : -EFAULT; pte = pte_offset_map(pmd, pg); - BUG_ON(pte_none(*pte)); + if (pte_none(*pte)) { + pte_unmap(pte); + return i ? : -EFAULT; + } if (pages) { pages[i] = pte_page(*pte); get_page(pages[i]);