arch/powerpc/mm/hash: validate the pte entries before handling the hash fault
Make sure we are operating on THP and hugetlb entries in the respective hash fault handling routines. No functional change in this patch. If we walked the table wrongly before, we will retry the access. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Родитель
ae28f17b5e
Коммит
75646c480f
|
@ -51,6 +51,12 @@ int __hash_page_thp(unsigned long ea, unsigned long access, unsigned long vsid,
|
|||
new_pmd |= _PAGE_DIRTY;
|
||||
} while (!pmd_xchg(pmdp, __pmd(old_pmd), __pmd(new_pmd)));
|
||||
|
||||
/*
|
||||
* Make sure this is thp or devmap entry
|
||||
*/
|
||||
if (!(old_pmd & (H_PAGE_THP_HUGE | _PAGE_DEVMAP)))
|
||||
return 0;
|
||||
|
||||
rflags = htab_convert_pte_flags(new_pmd);
|
||||
|
||||
#if 0
|
||||
|
|
|
@ -62,6 +62,10 @@ int __hash_page_huge(unsigned long ea, unsigned long access, unsigned long vsid,
|
|||
new_pte |= _PAGE_DIRTY;
|
||||
} while(!pte_xchg(ptep, __pte(old_pte), __pte(new_pte)));
|
||||
|
||||
/* Make sure this is a hugetlb entry */
|
||||
if (old_pte & (H_PAGE_THP_HUGE | _PAGE_DEVMAP))
|
||||
return 0;
|
||||
|
||||
rflags = htab_convert_pte_flags(new_pte);
|
||||
if (unlikely(mmu_psize == MMU_PAGE_16G))
|
||||
offset = PTRS_PER_PUD;
|
||||
|
|
Загрузка…
Ссылка в новой задаче