Descripción
In the Linux kernel, following vulnerability has been resolved:
arm64: cacheinfo: Fix incorrect assignment of signed error value to unsigned fw_level
Though acpi_find_last_cache_level() always returned and the
document states it will return any errors caused by lack a PPTT table,
it never negative values before.
Commit 0c80f9e165f8 ("ACPI: PPTT: Leave table mapped for runtime usage")
however changed returning -ENOENT if no was found. The value
returned from is then assigned unsigned
fw_level.
It result in number cache leaves calculated incorrectly as
a huge which cause warning __alloc_pages
as order would be great than MAX_ORDER because huge
cache value.
| WARNING: CPU: 0 PID: 1 at mm/page_alloc.c:5407 __alloc_pages+0x74/0x314
Modules linked in:
Comm: swapper/0 Not tainted 5.19.0-10393-g7c2a8d3ac4c0 #73
pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : lr alloc_pages+0xe8/0x318
Call trace:
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 same changing fw_level integer the
error init_cache_level() early case error.
https://git.kernel.org/stable/c/a754ee1c66bd0a23e613f0bf865053b29cb90e16
https://git.kernel.org/stable/c/e75d18cecbb3805895d8ed64da4f78575ec96043