diff options
author | Francesco Ruggeri <fruggeri@arista.com> | 2019-11-20 08:47:27 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-12-21 12:42:05 +0300 |
commit | 3f24ec5f5b32ee9f197e0b5897b1d6246adb74aa (patch) | |
tree | 6f9f01c6e9dd24667f1e4cc4178fbfffd8922774 /drivers/mtd | |
parent | b99f20c45949968c1f40b05712d515421e18b426 (diff) | |
download | linux-3f24ec5f5b32ee9f197e0b5897b1d6246adb74aa.tar.xz |
ACPI: OSL: only free map once in osl.c
commit 833a426cc471b6088011b3d67f1dc4e147614647 upstream.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/mtd')
0 files changed, 0 insertions, 0 deletions