forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/arch/xtensa/mm/tlb.c
....@@ -169,6 +169,8 @@
169169 struct task_struct *task = get_current();
170170 struct mm_struct *mm = task->mm;
171171 pgd_t *pgd;
172
+ p4d_t *p4d;
173
+ pud_t *pud;
172174 pmd_t *pmd;
173175 pte_t *pte;
174176
....@@ -177,7 +179,13 @@
177179 pgd = pgd_offset(mm, vaddr);
178180 if (pgd_none_or_clear_bad(pgd))
179181 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);
181189 if (pmd_none_or_clear_bad(pmd))
182190 return 0;
183191 pte = pte_offset_map(pmd, vaddr);