struct task_struct *p;
struct mm_struct *mm = NULL;
pgd_t *pgdp;
+ pud_t *pudp;
pmd_t *pmdp;
pte_t *ptep;
pgdp = pgd_offset(mm, va);
if (pgd_none(*pgdp))
goto done;
- pmdp = pmd_offset(pgdp, va);
+ pudp = pud_offset(pgdp, va);
+ if (pud_none(*pudp))
+ goto done;
+ pmdp = pmd_offset(pudp, va);
if (pmd_none(*pmdp))
goto done;
* vmalloc or prom_inherited mapping.
*/
pgd_t *pgdp;
+ pud_t *pudp;
pmd_t *pmdp;
pte_t *ptep;
int error;
pgdp = pgd_offset_k(va);
if (pgd_none(*pgdp))
goto done;
- pmdp = pmd_offset(pgdp, va);
+ pudp = pud_offset(pgdp, va);
+ if (pud_none(*pudp))
+ goto done;
+ pmdp = pmd_offset(pudp, va);
if (pmd_none(*pmdp))
goto done;