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

Pull arm64 fixes from Catalin Marinas:

- CFI failure due to kpti_ng_pgd_alloc() signature mismatch

- Underallocation bug in the SVE ptrace kselftest

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
kselftest/arm64: Don't open code SVE_PT_SIZE() in fp-ptrace
arm64: mm: Fix CFI failure due to kpti_ng_pgd_alloc function signature

Changed files
+12 -12
arch
arm64
include
asm
kernel
mm
tools
testing
selftests
arm64
+7
arch/arm64/include/asm/mmu.h
··· 17 17 #include <linux/refcount.h> 18 18 #include <asm/cpufeature.h> 19 19 20 + enum pgtable_type { 21 + TABLE_PTE, 22 + TABLE_PMD, 23 + TABLE_PUD, 24 + TABLE_P4D, 25 + }; 26 + 20 27 typedef struct { 21 28 atomic64_t id; 22 29 #ifdef CONFIG_COMPAT
+3 -2
arch/arm64/kernel/cpufeature.c
··· 84 84 #include <asm/hwcap.h> 85 85 #include <asm/insn.h> 86 86 #include <asm/kvm_host.h> 87 + #include <asm/mmu.h> 87 88 #include <asm/mmu_context.h> 88 89 #include <asm/mte.h> 89 90 #include <asm/hypervisor.h> ··· 1946 1945 extern 1947 1946 void create_kpti_ng_temp_pgd(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, 1948 1947 phys_addr_t size, pgprot_t prot, 1949 - phys_addr_t (*pgtable_alloc)(int), int flags); 1948 + phys_addr_t (*pgtable_alloc)(enum pgtable_type), int flags); 1950 1949 1951 1950 static phys_addr_t __initdata kpti_ng_temp_alloc; 1952 1951 1953 - static phys_addr_t __init kpti_ng_pgd_alloc(int shift) 1952 + static phys_addr_t __init kpti_ng_pgd_alloc(enum pgtable_type type) 1954 1953 { 1955 1954 kpti_ng_temp_alloc -= PAGE_SIZE; 1956 1955 return kpti_ng_temp_alloc;
-7
arch/arm64/mm/mmu.c
··· 47 47 #define NO_CONT_MAPPINGS BIT(1) 48 48 #define NO_EXEC_MAPPINGS BIT(2) /* assumes FEAT_HPDS is not used */ 49 49 50 - enum pgtable_type { 51 - TABLE_PTE, 52 - TABLE_PMD, 53 - TABLE_PUD, 54 - TABLE_P4D, 55 - }; 56 - 57 50 u64 kimage_voffset __ro_after_init; 58 51 EXPORT_SYMBOL(kimage_voffset); 59 52
+2 -3
tools/testing/selftests/arm64/fp/fp-ptrace.c
··· 1187 1187 if (!vl) 1188 1188 return; 1189 1189 1190 - iov.iov_len = SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, SVE_PT_REGS_SVE); 1190 + iov.iov_len = SVE_PT_SIZE(vq, SVE_PT_REGS_SVE); 1191 1191 iov.iov_base = malloc(iov.iov_len); 1192 1192 if (!iov.iov_base) { 1193 1193 ksft_print_msg("Failed allocating %lu byte SVE write buffer\n", ··· 1234 1234 if (!vl) 1235 1235 return; 1236 1236 1237 - iov.iov_len = SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, 1238 - SVE_PT_REGS_FPSIMD); 1237 + iov.iov_len = SVE_PT_SIZE(vq, SVE_PT_REGS_FPSIMD); 1239 1238 iov.iov_base = malloc(iov.iov_len); 1240 1239 if (!iov.iov_base) { 1241 1240 ksft_print_msg("Failed allocating %lu byte SVE write buffer\n",