linux/arch/arm64/kernel
Sudeep Holla e75d18cecb arm64: cacheinfo: Fix incorrect assignment of signed error value to unsigned fw_level
Though acpi_find_last_cache_level() always returned signed value and the
document states it will return any errors caused by lack of a PPTT table,
it never returned negative values before.

Commit 0c80f9e165 ("ACPI: PPTT: Leave the table mapped for the runtime usage")
however changed it by returning -ENOENT if no PPTT was found. The value
returned from acpi_find_last_cache_level() is then assigned to unsigned
fw_level.

It will result in the number of cache leaves calculated incorrectly as
a huge value which will then cause the following warning from __alloc_pages
as the order would be great than MAX_ORDER because of incorrect and huge
cache leaves value.

  |  WARNING: CPU: 0 PID: 1 at mm/page_alloc.c:5407 __alloc_pages+0x74/0x314
  |  Modules linked in:
  |  CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.19.0-10393-g7c2a8d3ac4c0 #73
  |  pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  |  pc : __alloc_pages+0x74/0x314
  |  lr : alloc_pages+0xe8/0x318
  |  Call trace:
  |   __alloc_pages+0x74/0x314
  |   alloc_pages+0xe8/0x318
  |   kmalloc_order_trace+0x68/0x1dc
  |   __kmalloc+0x240/0x338
  |   detect_cache_attributes+0xe0/0x56c
  |   update_siblings_masks+0x38/0x284
  |   store_cpu_topology+0x78/0x84
  |   smp_prepare_cpus+0x48/0x134
  |   kernel_init_freeable+0xc4/0x14c
  |   kernel_init+0x2c/0x1b4
  |   ret_from_fork+0x10/0x20

Fix the same by changing fw_level to be signed integer and return the
error from init_cache_level() early in case of error.

Reported-and-Tested-by: Bruno Goncalves <bgoncalv@redhat.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Link: https://lore.kernel.org/r/20220808084640.3165368-1-sudeep.holla@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
2022-08-23 11:10:24 +01:00
..
pi arm64: adjust KASLR relocation after ARCH_RANDOM removal 2022-08-17 14:52:50 +01:00
probes arm64: Treat ESR_ELx as a 64-bit register 2022-04-29 19:26:27 +01:00
vdso arm64: vdso*: place got/plt sections in .rodata 2022-06-28 17:41:44 +01:00
vdso32 arm64: vdso32: Add DWARF_DEBUG 2022-07-01 12:07:43 +01:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
acpi.c arm64: mm: Convert to GENERIC_IOREMAP 2022-06-27 12:22:31 +01:00
acpi_numa.c arm64: numa: Don't check node against MAX_NUMNODES 2022-07-19 19:10:28 +01:00
acpi_parking_protocol.c arm64: use function_nocfi with __pa_symbol 2021-04-08 16:04:22 -07:00
alternative.c arm64/sysreg: Standardise naming for CTR_EL0 fields 2022-07-05 11:45:45 +01:00
armv8_deprecated.c arm64: fix oops in concurrently setting insn_emulation sysctls 2022-07-04 12:18:47 +01:00
asm-offsets.c KVM: arm64: Drop unused workaround_flags vcpu field 2021-12-08 14:54:07 +00:00
cacheinfo.c arm64: cacheinfo: Fix incorrect assignment of signed error value to unsigned fw_level 2022-08-23 11:10:24 +01:00
cpu-reset.S arm64: kexec: remove cpu-reset.h 2021-10-01 13:31:00 +01:00
cpu_errata.c arm64: errata: add detection for AMEVCNTR01 incrementing incorrectly 2022-08-23 11:06:48 +01:00
cpu_ops.c
cpufeature.c arm64: errata: add detection for AMEVCNTR01 incrementing incorrectly 2022-08-23 11:06:48 +01:00
cpuidle.c arm64: cpuidle: remove generic cpuidle support 2022-06-23 14:19:33 +01:00
cpuinfo.c arm64: Delay initialisation of cpuinfo_arm64::reg_{zcr,smcr} 2022-07-25 11:02:11 +01:00
crash_core.c arm64: crash_core: Export MODULES, VMALLOC, and VMEMMAP ranges 2022-03-07 21:25:47 +00:00
crash_dump.c vmcore: convert copy_oldmem_page() to take an iov_iter 2022-04-29 14:37:59 -07:00
debug-monitors.c arm64: Treat ESR_ELx as a 64-bit register 2022-04-29 19:26:27 +01:00
efi-entry.S arm64: Rename arm64-internal cache maintenance functions 2021-05-25 19:27:49 +01:00
efi-header.S arm64: head: tidy up the Image header definition 2020-11-17 16:14:20 +00:00
efi-rt-wrapper.S Merge branch 'for-next/scs' into for-next/core 2020-05-28 18:03:40 +01:00
efi.c arm64: efi: Export screen_info 2021-08-04 16:54:36 +00:00
elfcore.c elf: Fix the arm64 MTE ELF segment name and value 2022-04-28 11:37:06 +01:00
entry-common.c context_tracking: Take NMI eqs entrypoints over RCU 2022-07-05 13:32:59 -07:00
entry-fpsimd.S arm64/sme: Implement ZA context switching 2022-04-22 18:51:02 +01:00
entry-ftrace.S arm64: ftrace: remove redundant label 2022-06-15 16:14:47 +01:00
entry.S arm64: Fix comment typo 2022-08-23 10:53:34 +01:00
fpsimd.c arm64/fpsimd: Remove duplicate SYS_SVCR read 2022-06-29 10:29:30 +01:00
ftrace.c arm64: ftrace: consistently handle PLTs. 2022-06-15 16:14:47 +01:00
head.S arm64: fix KASAN_INLINE 2022-07-20 16:08:10 +01:00
hibernate-asm.S arm64: kexec: install a copy of the linear-map 2021-10-01 13:31:00 +01:00
hibernate.c arm64: kasan: Revert "arm64: mte: reset the page tag in page->flags" 2022-07-07 10:48:37 +01:00
hw_breakpoint.c arm64: Treat ESR_ELx as a 64-bit register 2022-04-29 19:26:27 +01:00
hyp-stub.S Merge branch 'for-next/boot' into for-next/core 2022-07-25 10:59:15 +01:00
idle.c Merge branch 'for-next/entry' into for-next/core 2021-06-24 14:01:55 +01:00
idreg-override.c Merge branch 'for-next/boot' into for-next/core 2022-07-25 10:59:15 +01:00
image-vars.h arm64: lds: use PROVIDE instead of conditional definitions 2022-06-29 10:21:23 +01:00
image.h arm64: get rid of TEXT_OFFSET 2020-09-07 15:00:52 +01:00
io.c
irq.c arm64: irq: allow FIQs to be handled 2021-03-24 20:19:30 +00:00
jump_label.c jump_label: make initial NOP patching the special case 2022-06-24 09:48:55 +02:00
kaslr.c random: handle archrandom with multiple longs 2022-07-25 13:26:14 +02:00
kexec_image.c arm64: kexec_file: use more system keyrings to verify kernel image signature 2022-07-15 12:21:16 -04:00
kgdb.c arm64: Treat ESR_ELx as a 64-bit register 2022-04-29 19:26:27 +01:00
kuser32.S arm64: compat: Move kuser32.S to .rodata section 2022-06-23 16:01:42 +01:00
machine_kexec.c arm64: kdump: Reimplement crashkernel=X 2022-05-07 19:54:33 +01:00
machine_kexec_file.c arm64: kdump: Reimplement crashkernel=X 2022-05-07 19:54:33 +01:00
Makefile Merge branch 'for-next/boot' into for-next/core 2022-07-25 10:59:15 +01:00
module-plts.c arm64: fix typos in comments 2022-04-04 10:32:50 +01:00
module.c kasan, arm64: don't tag executable vmalloc allocations 2022-03-24 19:06:48 -07:00
mte.c arm64: kasan: Revert "arm64: mte: reset the page tag in page->flags" 2022-07-07 10:48:37 +01:00
paravirt.c arm64: paravirt: Use RCU read locks to guard stolen_time 2022-05-17 14:23:37 +01:00
patching.c arm64: patch_text: Fixup last cpu should be master 2022-04-08 11:43:46 +01:00
pci.c arm64: PCI: Support root bridge preparation for Hyper-V 2021-08-23 10:59:26 +01:00
perf_callchain.c Peter Zijlstra says: 2022-01-12 16:26:58 -08:00
perf_event.c arm64: perf: Expose some Armv9 common events under sysfs 2022-03-08 11:40:44 +00:00
perf_regs.c perf/arch: Remove perf_sample_data::regs_user_copy 2020-11-09 18:12:34 +01:00
pointer_auth.c arm64: move preemption disablement to prctl handlers 2021-07-28 18:33:49 +01:00
process.c This set of changes updates init and user mode helper tasks to be 2022-06-03 16:03:05 -07:00
proton-pack.c arm64: Add part number for Arm Cortex-A78AE 2022-04-08 11:46:46 +01:00
psci.c arm64: use function_nocfi with __pa_symbol 2021-04-08 16:04:22 -07:00
ptrace.c arm64/sme: Remove _EL0 from name of SVCR - FIXME sysreg.h 2022-05-16 19:50:20 +01:00
reloc_test_core.c
reloc_test_syms.S arm64: kernel: Convert to modern annotations for assembly functions 2020-05-04 12:46:03 +01:00
relocate_kernel.S arm64: kexec: load from kimage prior to clobbering 2022-05-17 14:25:35 +01:00
return_address.c arm64: Make return_address() use arch_stack_walk() 2021-12-10 14:06:04 +00:00
sdei.c arm64: kernel: add helper for booted at EL2 and not VHE 2021-10-01 13:30:59 +01:00
setup.c arm64: fix KASAN_INLINE 2022-07-20 16:08:10 +01:00
signal.c arm64/signal: Clean up SVE/SME feature checking inconsistency 2022-06-27 10:28:12 +01:00
signal32.c signal: Deliver SIGTRAP on perf event asynchronously if blocked 2022-04-22 12:14:05 +02:00
sigreturn32.S arm64: compat: Move sigreturn32.S to .rodata section 2022-07-01 12:05:45 +01:00
sleep.S arm64: Rename the VHE switch to "finalise_el2" 2022-07-01 15:22:51 +01:00
smccc-call.S arm64: smccc: Save lr before calling __arm_smccc_sve_check() 2021-07-21 11:23:25 +01:00
smp.c profile: setup_profiling_timer() is moslty not implemented 2022-07-29 18:12:36 -07:00
smp_spin_table.c arm64: Rename arm64-internal cache maintenance functions 2021-05-25 19:27:49 +01:00
stacktrace.c KVM: arm64: Make unwind()/on_accessible_stack() per-unwinder functions 2022-07-27 18:18:03 +01:00
suspend.c arm64: mm: provide idmap pointer to cpu_replace_ttbr1() 2022-06-24 17:18:10 +01:00
sys.c
sys32.c
sys_compat.c arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall 2022-04-29 19:26:27 +01:00
syscall.c arm64/sme: Remove _EL0 from name of SVCR - FIXME sysreg.h 2022-05-16 19:50:20 +01:00
time.c arm64: Make profile_pc() use arch_stack_walk() 2021-12-10 14:06:04 +00:00
topology.c arm64: errata: add detection for AMEVCNTR01 incrementing incorrectly 2022-08-23 11:06:48 +01:00
trace-events-emulation.h
traps.c arm64/sysreg: Standardise naming for CTR_EL0 fields 2022-07-05 11:45:45 +01:00
vdso-wrap.S arm64: do not descend to vdso directories twice 2021-01-20 12:18:46 +00:00
vdso.c Merge branches 'for-next/misc', 'for-next/kselftest', 'for-next/xntable', 'for-next/vdso', 'for-next/fiq', 'for-next/epan', 'for-next/kasan-vmalloc', 'for-next/fgt-boot-init', 'for-next/vhe-only' and 'for-next/neon-softirqs-disabled', remote-tracking branch 'arm64/for-next/perf' into for-next/core 2021-04-15 14:00:38 +01:00
vdso32-wrap.S arm64: do not descend to vdso directories twice 2021-01-20 12:18:46 +00:00
vmlinux.lds.S Merge branch 'for-next/boot' into for-next/core 2022-07-25 10:59:15 +01:00