Le 07/09/2020 à 20:00, Gerald Schaefer a écrit :
From: Alexander Gordeev <agordeev@xxxxxxxxxxxxx> Unlike all other page-table abstractions pXd_addr_end() do not take into account a particular table entry in which context the functions are called. On architectures with dynamic page-tables folding that might lead to lack of necessary information that is difficult to obtain other than from the table entry itself. That already led to a subtle memory corruption issue on s390. By letting pXd_addr_end() functions know about the page-table entry we allow archs not only make extra checks, but also optimizations. As result of this change the pXd_addr_end_folded() functions used in gup_fast traversal code become unnecessary and get replaced with universal pXd_addr_end() variants. The arch-specific updates not only add dereferencing of page-table entry pointers, but also small changes to the code flow to make those dereferences possible, at least for x86 and powerpc. Also for arm64, but in way that should not have any impact.
[...]
Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxxxxx> Signed-off-by: Gerald Schaefer <gerald.schaefer@xxxxxxxxxxxxx> --- arch/arm/include/asm/pgtable-2level.h | 2 +- arch/arm/mm/idmap.c | 6 ++-- arch/arm/mm/mmu.c | 8 ++--- arch/arm64/kernel/hibernate.c | 16 ++++++---- arch/arm64/kvm/mmu.c | 16 +++++----- arch/arm64/mm/kasan_init.c | 8 ++--- arch/arm64/mm/mmu.c | 25 +++++++-------- arch/powerpc/mm/book3s64/radix_pgtable.c | 7 ++--- arch/powerpc/mm/hugetlbpage.c | 6 ++--
You forgot arch/powerpc/mm/book3s64/subpage_prot.c it seems.
arch/s390/include/asm/pgtable.h | 8 ++--- arch/s390/mm/page-states.c | 8 ++--- arch/s390/mm/pageattr.c | 8 ++--- arch/s390/mm/vmem.c | 8 ++--- arch/sparc/mm/hugetlbpage.c | 6 ++-- arch/um/kernel/tlb.c | 8 ++--- arch/x86/mm/init_64.c | 15 ++++----- arch/x86/mm/kasan_init_64.c | 16 +++++----- include/asm-generic/pgtable-nop4d.h | 2 +- include/asm-generic/pgtable-nopmd.h | 2 +- include/asm-generic/pgtable-nopud.h | 2 +- include/linux/pgtable.h | 26 ++++----------- mm/gup.c | 8 ++--- mm/ioremap.c | 8 ++--- mm/kasan/init.c | 17 +++++----- mm/madvise.c | 4 +-- mm/memory.c | 40 ++++++++++++------------ mm/mlock.c | 18 ++++++++--- mm/mprotect.c | 8 ++--- mm/pagewalk.c | 8 ++--- mm/swapfile.c | 8 ++--- mm/vmalloc.c | 16 +++++----- 31 files changed, 165 insertions(+), 173 deletions(-)
Christophe