linux/drivers/acpi/apei
James Morse eeb2555779 ACPI / APEI: Don't store CPER records physical address in struct ghes
When CPER records are found the address of the records is stashed
in the struct ghes. Once the records have been processed, this
address is overwritten with zero so that it won't be processed
again without being re-populated by firmware.

This goes wrong if a struct ghes can be processed concurrently,
as can happen at probe time when an NMI occurs. If the NMI arrives
on another CPU, the probing CPU may call ghes_clear_estatus() on the
records before the handler had finished with them.
Even on the same CPU, once the interrupted handler is resumed, it
will call ghes_clear_estatus() on the NMIs records, this memory may
have already been re-used by firmware.

Avoid this stashing by letting the caller hold the address. A
later patch will do away with the use of ghes->flags in the
read/clear code too.

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>
2019-02-07 23:10:45 +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: Use DEFINE_DEBUGFS_ATTRIBUTE for debugfs files 2019-01-14 11:55:45 +01:00
erst-dbg.c ACPI: Remove FSF mailing addresses 2015-07-08 02:27:32 +02:00
erst.c APEI / ERST: Switch to use new generic UUID API 2019-01-14 11:23:51 +01:00
ghes.c ACPI / APEI: Don't store CPER records physical address in struct ghes 2019-02-07 23:10:45 +01:00
hest.c ACPI / APEI: Make estatus pool allocation a static size 2019-02-07 23:10:45 +01: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