linux/arch/arm64/include/asm
Linus Torvalds 266ee584e5 arm64 fixes:
- Do not make a clean PTE dirty in pte_mkwrite()
 
    The Arm architecture, for backwards compatibility reasons (ARMv8.0
    before in-hardware dirty bit management - DBM), uses the PTE_RDONLY
    bit to mean !dirty while the PTE_WRITE bit means DBM enabled. The
    arm64 pte_mkwrite() simply clears the PTE_RDONLY bit and this
    inadvertently makes the PTE pte_hw_dirty(). Most places making a PTE
    writable also invoke pte_mkdirty() but do_swap_page() does not and we
    end up with dirty, freshly swapped in, writeable pages.
 
  - Do not warn if the destination page is already MTE-tagged in
    copy_highpage()
 
    In the majority of the cases, a destination page copied into is
    freshly allocated without the PG_mte_tagged flag set. However, the
    folio migration may be restarted if __folio_migrate_mapping() failed,
    triggering the benign WARN_ON_ONCE().
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEE5RElWfyWxS+3PLO2a9axLQDIXvEFAmj6bJwACgkQa9axLQDI
 XvF/Kg//TumWHlM3o07ol2yhK+EXUTMW8DNwzGwKAqPKl19iElZ+F3yVSfgXOxAi
 hjZk9qIPGNokKulKX0drJahuhaXVW30ynh9EX6xPhXN6+faqCv8JR7zSABvMXm9E
 FYmqEz678RNkIrfSn0uJw6kF3Dakn6IrZbarD2WRWg9kcwQIZCHfdxbiSbuBKQ+m
 oXk5pjndTjuKujMWAhZbmuWGPNc1EfzulwhgpARgQNUxtvToLR/aS+TLykGKXPTL
 GieHWR3/AiN1Jhwvsp4ElxLvnM1cau/QhnMX9kCAUjwRfnPBUa+jt/OPziO7s9Gh
 NeImrwdtSBi/B5a7GaozZwsyeTAahrmSpaTjzQOrw3jr+Scn7seXtRJMFwYBiXNv
 7GGDKsNXc6qmmrdC1Epqvzk6EDFpv2SPkeXIUJVxxaM7qpkhTgxnScqZzaYYmTu+
 0CPKMmVtRfHr4GJqkhFcfHQMEHtxpOsA803t4w5iIgVQQQciEcHM7v21h5PWBIqO
 vZydWITX/cGk2rwXtfZ4EATG1fl8jt1gwUD6FSUz73gBueLD1DHBhS3AkRCptdeR
 AraXxdxdUZAH/7k1k0WOzBCoVBmbT8yjyTdKLH7KlHVaHIQDp+dmcR9mj1VoF5VP
 sQXl9pG/WqrIz7pBBWEW83eeSlDK0mD7R9n8k9yHpsEy/ditFXI=
 =3tTN
 -----END PGP SIGNATURE-----

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 fixes from Catalin Marinas:

 - Do not make a clean PTE dirty in pte_mkwrite()

   The Arm architecture, for backwards compatibility reasons (ARMv8.0
   before in-hardware dirty bit management - DBM), uses the PTE_RDONLY
   bit to mean !dirty while the PTE_WRITE bit means DBM enabled. The
   arm64 pte_mkwrite() simply clears the PTE_RDONLY bit and this
   inadvertently makes the PTE pte_hw_dirty(). Most places making a PTE
   writable also invoke pte_mkdirty() but do_swap_page() does not and we
   end up with dirty, freshly swapped in, writeable pages.

 - Do not warn if the destination page is already MTE-tagged in
   copy_highpage()

   In the majority of the cases, a destination page copied into is
   freshly allocated without the PG_mte_tagged flag set. However, the
   folio migration may be restarted if __folio_migrate_mapping() failed,
   triggering the benign WARN_ON_ONCE().

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: mte: Do not warn if the page is already tagged in copy_highpage()
  arm64, mm: avoid always making PTE dirty in pte_mkwrite()
2025-10-23 09:26:47 -10:00
..
stacktrace
vdso vdso: Move ENABLE_COMPAT_VDSO from core to arm64 2025-09-04 11:23:49 +02:00
xen arm64: ptrace: Replace interrupts_enabled() with regs_irqs_disabled() 2025-09-11 15:55:34 +01:00
Kbuild
acenv.h
acpi.h
alternative-macros.h
alternative.h
apple_m1_pmu.h
arch_gicv3.h
arch_timer.h
archrandom.h
arm-cci.h
arm_dsu_pmu.h
arm_pmuv3.h
asm-bug.h
asm-extable.h
asm-offsets.h
asm-prototypes.h
asm-uaccess.h
asm_pointer_auth.h
assembler.h
atomic.h
atomic_ll_sc.h
atomic_lse.h
barrier.h
bitops.h
bitrev.h
boot.h
brk-imm.h
bug.h
cache.h
cacheflush.h
cfi.h
checksum.h
clocksource.h
cmpxchg.h
compat.h
compiler.h
cpu.h
cpu_ops.h
cpucaps.h
cpufeature.h arm64: mm: support large block mapping when rodata=full 2025-09-18 21:36:37 +01:00
cpuidle.h
cputype.h arm64: cputype: Add Neoverse-V3AE definitions 2025-09-22 11:27:14 +01:00
crash_reserve.h
current.h
daifflags.h arm64: ptrace: Replace interrupts_enabled() with regs_irqs_disabled() 2025-09-11 15:55:34 +01:00
dcc.h
debug-monitors.h
device.h
dmi.h
efi.h
el2_setup.h arm64: Revamp HCR_EL2.E2H RES1 detection 2025-10-14 08:18:40 +01:00
elf.h
entry-common.h arm64: entry: Switch to generic IRQ entry 2025-09-11 15:55:35 +01:00
esr.h
exception.h arm64: entry: Switch to generic IRQ entry 2025-09-11 15:55:35 +01:00
exec.h
extable.h
fixmap.h
fpsimd.h
fpsimdmacros.h
fpu.h
ftrace.h tracing: Fix the bug where bpf_get_stackid returns -EFAULT on the ARM64 2025-09-25 13:59:26 +01:00
futex.h
gcs.h arm64: uaccess: Add additional userspace GCS accessors 2025-09-16 21:32:53 +01:00
gpr-num.h
hardirq.h
hugetlb.h mm: introduce memdesc_flags_t 2025-09-13 16:55:07 -07:00
hw_breakpoint.h
hwcap.h arm64/hwcap: Add hwcap for FEAT_LSFE 2025-09-16 19:55:11 +01:00
hyp_image.h
hypervisor.h
image.h
insn-def.h
insn.h
io.h arm64: Enable EFI secret area Securityfs support 2025-09-19 10:12:01 +01:00
irq.h
irq_work.h
irqflags.h
jump_label.h
kasan.h
kernel-pgtable.h
kexec.h
kfence.h
kgdb.h
kprobes.h
kvm_arm.h
kvm_asm.h KVM: arm64: Introduce separate hypercalls for pKVM VM reservation and initialization 2025-09-15 10:46:55 +01:00
kvm_emulate.h Merge branch kvm-arm64/misc-6.18 into kvmarm-master/next 2025-09-20 12:26:29 +01:00
kvm_host.h KVM: arm64: Compute per-vCPU FGTs at vcpu_load() 2025-10-13 14:44:37 +01:00
kvm_hyp.h
kvm_mmu.h
kvm_mte.h
kvm_nested.h Merge branch kvm-arm64/nv-debug into kvmarm-master/next 2025-09-20 12:26:11 +01:00
kvm_pgtable.h Revert "KVM: arm64: Split kvm_pgtable_stage2_destroy()" 2025-09-10 11:11:22 -07:00
kvm_pkvm.h KVM/arm64 updates for 6.18 2025-09-30 13:23:28 -04:00
kvm_ptrauth.h
kvm_types.h
linkage.h
lse.h
mem_encrypt.h
memory.h kasan/hw-tags: introduce kasan.write_only option 2025-09-21 14:22:10 -07:00
mman.h
mmu.h arm64: mm: Move KPTI helpers to mmu.c 2025-09-25 14:47:19 +01:00
mmu_context.h
module.h arm64: ftrace: fix unreachable PLT for ftrace_caller in init_module with CONFIG_DYNAMIC_FTRACE 2025-09-05 16:56:20 +01:00
module.lds.h arm64: ftrace: fix unreachable PLT for ftrace_caller in init_module with CONFIG_DYNAMIC_FTRACE 2025-09-05 16:56:20 +01:00
mshyperv.h
mte-def.h
mte-kasan.h kasan/hw-tags: introduce kasan.write_only option 2025-09-21 14:22:10 -07:00
mte.h mm: introduce memdesc_flags_t 2025-09-13 16:55:07 -07:00
neon-intrinsics.h
neon.h
numa.h
page-def.h
page.h
paravirt.h
paravirt_api_clock.h
pci.h
percpu.h
perf_event.h
pgalloc.h
pgtable-hwdef.h
pgtable-prot.h
pgtable-types.h
pgtable.h arm64, mm: avoid always making PTE dirty in pte_mkwrite() 2025-10-21 15:00:25 +01:00
pkeys.h
pointer_auth.h
por.h
preempt.h arm64: entry: Switch to generic IRQ entry 2025-09-11 15:55:35 +01:00
probes.h
proc-fns.h
processor.h
ptdump.h arm64: Enable vmalloc-huge with ptdump 2025-09-22 11:53:24 +01:00
ptrace.h arm64: entry: Refactor the entry and exit for exceptions from EL1 2025-09-11 15:55:34 +01:00
pvclock-abi.h
rqspinlock.h
rsi.h arm64: realm: ioremap: Allow mapping memory as encrypted 2025-09-19 10:12:01 +01:00
rsi_cmds.h
rsi_smc.h
runtime-const.h
rwonce.h
scs.h
sdei.h
seccomp.h
sections.h
semihost.h
set_memory.h
setup.h arm64: mm: Rework the 'rodata=' options 2025-09-16 20:53:13 +01:00
shmparam.h
signal.h
signal32.h
simd.h
smp.h
smp_plat.h
sparsemem.h
spectre.h
spinlock.h
spinlock_types.h
stack_pointer.h
stackprotector.h
stacktrace.h
stage2_pgtable.h
stat.h
string.h
suspend.h
sync_bitops.h
syscall.h
syscall_wrapper.h
sysreg.h arm64/sysreg: Fix GIC CDEOI instruction encoding 2025-10-17 17:55:01 +01:00
system_misc.h
text-patching.h
thread_info.h
timex.h
tlb.h
tlbbatch.h
tlbflush.h
topology.h
trans_pgd.h
traps.h KVM: arm64: Dump instruction on hyp panic 2025-09-15 13:04:22 +01:00
uaccess.h arm64: uaccess: Move existing GCS accessors definitions to gcs.h 2025-09-16 20:31:44 +01:00
unistd.h
unistd32.h
uprobes.h
vdso.h
vectors.h
vermagic.h
virt.h
vmalloc.h arm64: Enable vmalloc-huge with ptdump 2025-09-22 11:53:24 +01:00
vmap_stack.h
vncr_mapping.h KVM: arm64: Add trap configs for PMSDSFR_EL1 2025-09-19 14:30:49 +01:00
word-at-a-time.h
xor.h