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