Skip to content

Commit 597f41e

Browse files
Alexandru EliseiMarc Zyngier
authored andcommitted
KVM: arm64: Update stale comment for sanitise_mte_tags()
Commit c911f0d ("KVM: arm64: permit all VM_MTE_ALLOWED mappings with MTE enabled") allowed VM_SHARED VMAs in a VM with MTE enabled, so remove the comment to the contrary. Commit d77e59a ("arm64: mte: Lock a page for MTE tag initialisation") removed the race that can lead to tags being zeroed more than once when multiple threads attempt initialisation at the same time, so remove the comment about mmap_lock too. Note that sanitise_mte_tags() was never called with the mmap_lock held from user_mem_abort() and the race was prevented by kvm->mmu_lock. However, the function still requires to have the kvm->mmu_lock held to ensure that the memory remains mapped in the userspace process while the tags are zeroed. Document this in a comment. CC: Peter Collingbourne <pcc@google.com> CC: Catalin Marinas <catalin.marinas@arm.com> CC: Steven Price <steven.price@arm.com> Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com> Reviewed-by: Steven Price <steven.price@arm.com> Signed-off-by: Marc Zyngier <maz@kernel.org>
1 parent 27d2b47 commit 597f41e

1 file changed

Lines changed: 2 additions & 5 deletions

File tree

arch/arm64/kvm/mmu.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1426,11 +1426,8 @@ static int get_vma_page_shift(struct vm_area_struct *vma, unsigned long hva)
14261426
* able to see the page's tags and therefore they must be initialised first. If
14271427
* PG_mte_tagged is set, tags have already been initialised.
14281428
*
1429-
* The race in the test/set of the PG_mte_tagged flag is handled by:
1430-
* - preventing VM_SHARED mappings in a memslot with MTE preventing two VMs
1431-
* racing to santise the same page
1432-
* - mmap_lock protects between a VM faulting a page in and the VMM performing
1433-
* an mprotect() to add VM_MTE
1429+
* Must be called with kvm->mmu_lock held to ensure the memory remains mapped
1430+
* while the tags are zeroed.
14341431
*/
14351432
static void sanitise_mte_tags(struct kvm *kvm, kvm_pfn_t pfn,
14361433
unsigned long size)

0 commit comments

Comments
 (0)