Messages in this thread | | | From | Francesco Ruggeri <> | Date | Tue, 26 Nov 2019 14:42:00 -0800 | Subject | Re: [PATCH] ACPI: only free map once in osl.c |
| |
On Thu, Nov 21, 2019 at 2:58 PM Dmitry Safonov <0x7f454c46@gmail.com> wrote: > > On Wed, 20 Nov 2019 at 05:50, Francesco Ruggeri <fruggeri@arista.com> wrote: > > > > 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> > > Thanks, > Dmitry
Any more comments on this? Can this be applied or is more work needed?
Thanks, Francesco Ruggeri
| |