mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
UPSTREAM: arm64: mm: implement arch_faults_on_old_pte() on arm64
On arm64 without hardware Access Flag, copying from user will fail because the pte is old and cannot be marked young. So we always end up with zeroed page after fork() + CoW for pfn mappings. We don't always have a hardware-managed Access Flag on arm64. Hence implement arch_faults_on_old_pte on arm64 to indicate that it might cause page fault when accessing old pte. Moto-CRs-Fixed:(CR) Link: https://lore.kernel.org/r/20191011140939.6115-3-justin.he@arm.com/ Change-Id: Ica230a882941cb17a1acdd6c6c9f3ec1b3f494b3 Signed-off-by: Jia He <justin.he@arm.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit 6af31226d0394691f5562eca0134262bb935fa9c) Bug: 261052246 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Reviewed-on: https://gerrit.mot.com/2491777 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Xiangpo Zhao <zhaoxp3@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
5d7abefcf8
commit
adb8e3c5c0
1 changed files with 14 additions and 0 deletions
|
|
@ -886,6 +886,20 @@ static inline void update_mmu_cache(struct vm_area_struct *vma,
|
|||
#define phys_to_ttbr(addr) (addr)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* On arm64 without hardware Access Flag, copying from user will fail because
|
||||
* the pte is old and cannot be marked young. So we always end up with zeroed
|
||||
* page after fork() + CoW for pfn mappings. We don't always have a
|
||||
* hardware-managed access flag on arm64.
|
||||
*/
|
||||
static inline bool arch_faults_on_old_pte(void)
|
||||
{
|
||||
WARN_ON(preemptible());
|
||||
|
||||
return !cpu_has_hw_af();
|
||||
}
|
||||
#define arch_faults_on_old_pte arch_faults_on_old_pte
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#endif /* __ASM_PGTABLE_H */
|
||||
|
|
|
|||
Loading…
Reference in a new issue