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]);