|
|
@@ -458,11 +458,14 @@ static int get_gate_page(struct mm_struct *mm, unsigned long address,
|
|
|
pgd = pgd_offset_k(address);
|
|
|
else
|
|
|
pgd = pgd_offset_gate(mm, address);
|
|
|
- BUG_ON(pgd_none(*pgd));
|
|
|
+ if (pgd_none(*pgd))
|
|
|
+ return -EFAULT;
|
|
|
p4d = p4d_offset(pgd, address);
|
|
|
- BUG_ON(p4d_none(*p4d));
|
|
|
+ if (p4d_none(*p4d))
|
|
|
+ return -EFAULT;
|
|
|
pud = pud_offset(p4d, address);
|
|
|
- BUG_ON(pud_none(*pud));
|
|
|
+ if (pud_none(*pud))
|
|
|
+ return -EFAULT;
|
|
|
pmd = pmd_offset(pud, address);
|
|
|
if (!pmd_present(*pmd))
|
|
|
return -EFAULT;
|