]> git.hungrycats.org Git - linux/commitdiff
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 28 Aug 2026 16:02:04 +0000 (09:02 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 28 Aug 2026 16:02:04 +0000 (09:02 -0700)
Pull arm64 fixes from Will Deacon:
 "A mixture of ptdump, compat and MTE fixes that came in during the
  merge window:

   - Fix address handling of final memory region in ptdump

   - Fix emulation of decrementing load/store multiple from 32-bit task

   - Fix SCTLR context-switching for store-only MTE mode

   - Fix numerous issues in MTE selftests"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  selftests/arm64: Add MTE test config fragment
  selftests/arm64: Fix MTE prctl TAP plan
  selftests/arm64: Treat KSM merge_across_nodes as optional
  selftests/arm64: Print missing MTE TAP headers
  arm64: compat: Fix decrementing LDM/STM alignment emulation
  arm64: process: Fix context switching MTE store-only tag check
  KVM: arm64: ptdump: Flush the last region
  arm64: ptdump: Make note_page_flush() range aware

1  2 
arch/arm64/include/asm/ptdump.h
arch/arm64/mm/ptdump.c

Simple merge
index 5a76c59b5ada555055388b615bacd678db670cfa,eab400e744d909e1f47d2a2471e8e4d192005e83..9d9bcb6738f4c8c743f135ce87470e5417a4082a
@@@ -278,11 -278,28 +278,21 @@@ void note_page_pgd(struct ptdump_state 
  
  void note_page_flush(struct ptdump_state *pt_st)
  {
+       struct ptdump_pg_state *st = container_of(pt_st, struct ptdump_pg_state, ptdump);
+       unsigned long end = st->end_address;
        pte_t pte_zero = {0};
  
-       note_page(pt_st, 0, -1, pte_val(pte_zero));
+       /*
+        * Address spaces that end at 1 << 64 have end_address == ULONG_MAX,
+        * but note_page() expects the exclusive end. In this case adjust end
+        * to the wraparound value 0.
+        */
+       if (end == ULONG_MAX)
+               end = 0;
+       note_page(pt_st, end, -1, pte_val(pte_zero));
  }
  
 -static void arm64_ptdump_walk_pgd(struct ptdump_state *st, struct mm_struct *mm)
 -{
 -      static_branch_inc(&arm64_ptdump_lock_key);
 -      ptdump_walk_pgd(st, mm, NULL);
 -      static_branch_dec(&arm64_ptdump_lock_key);
 -}
 -
  void ptdump_walk(struct seq_file *s, struct ptdump_info *info)
  {
        unsigned long end = ~0UL;