| .. | .. |
|---|
| 169 | 169 | struct task_struct *task = get_current(); |
|---|
| 170 | 170 | struct mm_struct *mm = task->mm; |
|---|
| 171 | 171 | pgd_t *pgd; |
|---|
| 172 | + p4d_t *p4d; |
|---|
| 173 | + pud_t *pud; |
|---|
| 172 | 174 | pmd_t *pmd; |
|---|
| 173 | 175 | pte_t *pte; |
|---|
| 174 | 176 | |
|---|
| .. | .. |
|---|
| 177 | 179 | pgd = pgd_offset(mm, vaddr); |
|---|
| 178 | 180 | if (pgd_none_or_clear_bad(pgd)) |
|---|
| 179 | 181 | return 0; |
|---|
| 180 | | - pmd = pmd_offset(pgd, vaddr); |
|---|
| 182 | + p4d = p4d_offset(pgd, vaddr); |
|---|
| 183 | + if (p4d_none_or_clear_bad(p4d)) |
|---|
| 184 | + return 0; |
|---|
| 185 | + pud = pud_offset(p4d, vaddr); |
|---|
| 186 | + if (pud_none_or_clear_bad(pud)) |
|---|
| 187 | + return 0; |
|---|
| 188 | + pmd = pmd_offset(pud, vaddr); |
|---|
| 181 | 189 | if (pmd_none_or_clear_bad(pmd)) |
|---|
| 182 | 190 | return 0; |
|---|
| 183 | 191 | pte = pte_offset_map(pmd, vaddr); |
|---|