diff options
author | Francesco Ruggeri <fruggeri@arista.com> | 2019-11-20 08:47:27 +0300 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2019-11-29 12:31:12 +0300 |
commit | 833a426cc471b6088011b3d67f1dc4e147614647 (patch) | |
tree | 3ee114c6786b4cb9e9e908c185d4ca42faea0fc9 /Documentation | |
parent | 6e9f879684b46331f51d0c76ebee981c788417db (diff) | |
download | linux-833a426cc471b6088011b3d67f1dc4e147614647.tar.xz |
ACPI: OSL: only free map once in osl.c
acpi_os_map_cleanup checks map->refcount outside of acpi_ioremap_lock
before freeing the map. This creates a race condition the can result
in the map being freed more than once.
A panic can be caused by running
for ((i=0; i<10; i++))
do
for ((j=0; j<100000; j++))
do
cat /sys/firmware/acpi/tables/data/BERT >/dev/null
done &
done
This patch makes sure that only the process that drops the reference
to 0 does the freeing.
Fixes: b7c1fadd6c2e ("ACPI: Do not use krefs under a mutex in osl.c")
Signed-off-by: Francesco Ruggeri <fruggeri@arista.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: All applicable <stable@vger.kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'Documentation')
0 files changed, 0 insertions, 0 deletions