linux-uconsole/drivers/acpi/apei
James Morse 81ae6e6bfa ACPI / APEI: Switch estatus pool to use vmalloc memory
[ Upstream commit 0ac234be1a ]

The ghes code is careful to parse and round firmware's advertised
memory requirements for CPER records, up to a maximum of 64K.
However when ghes_estatus_pool_expand() does its work, it splits
the requested size into PAGE_SIZE granules.

This means if firmware generates 5K of CPER records, and correctly
describes this in the table, __process_error() will silently fail as it
is unable to allocate more than PAGE_SIZE.

Switch the estatus pool to vmalloc() memory. On x86 vmalloc() memory
may fault and be fixed up by vmalloc_fault(). To prevent this call
vmalloc_sync_all() before an NMI handler could discover the memory.

Signed-off-by: James Morse <james.morse@arm.com>
Reviewed-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-12-05 09:21:20 +01:00
..
apei-base.c ACPI / APEI: Fix leaked resources 2016-03-11 00:13:25 +01:00
apei-internal.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bert.c ACPI: APEI: Fix BERT resources conflict with ACPI NVS area 2017-02-27 22:53:11 +01:00
einj.c ACPI, APEI, EINJ: Subtract any matching Register Region from Trigger resources 2017-08-29 00:32:49 +02:00
erst-dbg.c ACPI: Remove FSF mailing addresses 2015-07-08 02:27:32 +02:00
erst.c pstore: Convert buf_lock to semaphore 2019-06-11 12:20:52 +02:00
ghes.c ACPI / APEI: Switch estatus pool to use vmalloc memory 2019-12-05 09:21:20 +01:00
hest.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
Kconfig License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00