diff options
author | 2022-06-29 10:53:49 +0100 | |
---|---|---|
committer | 2022-07-01 18:29:26 +0100 | |
commit | 410982303772993a86bb7a9cfa7ece34522b2636 (patch) | |
tree | b5ece703f4811290655a3556d7c3d5c7167796b2 /scripts/generate_rust_analyzer.py | |
parent | arm64: mm: Don't invalidate FROM_DEVICE buffers at start of DMA transfer (diff) | |
download | wireguard-linux-410982303772993a86bb7a9cfa7ece34522b2636.tar.xz wireguard-linux-410982303772993a86bb7a9cfa7ece34522b2636.zip |
arm64: hugetlb: Restore TLB invalidation for BBM on contiguous ptes
Commit fb396bb459c1 ("arm64/hugetlb: Drop TLB flush from get_clear_flush()")
removed TLB invalidation from get_clear_flush() [now get_clear_contig()]
on the basis that the core TLB invalidation code is aware of hugetlb
mappings backed by contiguous page-table entries and will cover the
correct virtual address range.
However, this change also resulted in the TLB invalidation being removed
from the "break" step in the break-before-make (BBM) sequence used
internally by huge_ptep_set_{access_flags,wrprotect}(), therefore
making the BBM sequence unsafe irrespective of later invalidation.
Although the architecture is desperately unclear about how exactly
contiguous ptes should be updated in a live page-table, restore TLB
invalidation to our BBM sequence under the assumption that BBM is the
right thing to be doing in the first place.
Fixes: fb396bb459c1 ("arm64/hugetlb: Drop TLB flush from get_clear_flush()")
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Steve Capper <steve.capper@arm.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Marc Zyngier <maz@kernel.org>
Signed-off-by: Will Deacon <will@kernel.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Link: https://lore.kernel.org/r/20220629095349.25748-1-will@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'scripts/generate_rust_analyzer.py')
0 files changed, 0 insertions, 0 deletions