mirror-linux/drivers/char
Chengfeng Ye b02bb79eee ipmi: fix potential deadlock on &kcs_bmc->lock
As kcs_bmc_handle_event() is executed inside both a timer and a hardirq,
it should disable irq before lock acquisition otherwise deadlock could
happen if the timmer is preemtped by the irq.

Possible deadlock scenario:
aspeed_kcs_check_obe() (timer)
    -> kcs_bmc_handle_event()
    -> spin_lock(&kcs_bmc->lock)
        <irq interruption>
        -> aspeed_kcs_irq()
        -> kcs_bmc_handle_event()
        -> spin_lock(&kcs_bmc->lock) (deadlock here)

This flaw was found using an experimental static analysis tool we are
developing for irq-related deadlock.

The tentative patch fix the potential deadlock by spin_lock_irqsave()

Signed-off-by: Chengfeng Ye <dg573847474@gmail.com>
Message-Id: <20230627152449.36093-1-dg573847474@gmail.com>
Signed-off-by: Corey Minyard <minyard@acm.org>
2023-07-04 09:22:45 -05:00
..
agp char/agp: consolidate {alloc,free}_gatt_pages() 2023-02-13 22:13:12 +01:00
hw_random hwrng: xgene - remove unnecessary (void*) conversions 2023-03-24 18:22:28 +08:00
ipmi ipmi: fix potential deadlock on &kcs_bmc->lock 2023-07-04 09:22:45 -05:00
mwave
tpm tpm/tpm_tis: Disable interrupts for more Lenovo devices 2023-05-16 02:48:23 +03:00
xilinx_hwicap driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
xillybus driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
Kconfig char: pcmcia: remove all the drivers 2023-03-09 17:30:27 +01:00
Makefile char: pcmcia: remove all the drivers 2023-03-09 17:30:27 +01:00
adi.c
apm-emulation.c
applicom.c applicom: Fix PCI device refcount leak in applicom_init() 2023-01-20 13:05:39 +01:00
applicom.h
bsr.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
ds1620.c
dsp56k.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
dtlk.c
hangcheck-timer.c
hpet.c
lp.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
mem.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
misc.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
mspec.c mm: replace vma->vm_flags direct modifications with modifier calls 2023-02-09 16:51:39 -08:00
nsc_gpio.c
nvram.c
nwbutton.c
nwbutton.h
nwflash.c
pc8736x_gpio.c
powernv-op-panel.c
ppdev.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
ps3flash.c
random.c cpumask: fix incorrect cpumask scanning result checks 2023-03-06 12:15:13 -08:00
scx200_gpio.c
sonypi.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
tlclk.c
toshiba.c
ttyprintk.c
uv_mmtimer.c
virtio_console.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00