linux/drivers/atm
Chengfeng Ye 82102501e0 atm: solos-pci: Fix potential deadlock on &tx_queue_lock
[ Upstream commit 15319a4e8e ]

As &card->tx_queue_lock is acquired under softirq context along the
following call chain from solos_bh(), other acquisition of the same
lock inside process context should disable at least bh to avoid double
lock.

<deadlock #2>
pclose()
--> spin_lock(&card->tx_queue_lock)
<interrupt>
   --> solos_bh()
   --> fpga_tx()
   --> spin_lock(&card->tx_queue_lock)

This flaw was found by an experimental static analysis tool I am
developing for irq-related deadlock.

To prevent the potential deadlock, the patch uses spin_lock_bh()
on &card->tx_queue_lock under process context code consistently to
prevent the possible deadlock scenario.

Fixes: 213e85d389 ("solos-pci: clean up pclose() function")
Signed-off-by: Chengfeng Ye <dg573847474@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-12-20 17:01:46 +01:00
..
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
adummy.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
atmtcp.c atm: atmtcp: Constify atmtcp_v_dev_ops 2020-09-28 16:03:30 -07:00
eni.c atm: eni: Add check for dma_map_single 2022-03-15 11:01:52 +00:00
eni.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fore200e.c atm: fore200e: Fix fall-through warnings for Clang 2021-05-17 18:50:49 -05:00
fore200e.h fore200e: devirtualize dma alloc calls 2018-10-10 22:38:50 -07:00
he.c atm: he: Use the bitmap API to allocate bitmaps 2022-07-11 19:49:53 -07:00
he.h
idt77105.c atm: idt77252: fix null-ptr-dereference 2021-03-08 15:16:30 -08:00
idt77105.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
idt77252_tables.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
idt77252.c atm: idt77252: fix kmemleak when rmmod idt77252 2023-03-21 20:19:28 -07:00
idt77252.h atm: idt77252: fix build broken on amd64 2021-02-15 12:36:27 -08:00
iphase.c atm: iphase: Do PCI error checks on own line 2023-11-28 17:19:43 +00:00
iphase.h atm: Replace custom isprint() with generic analogue 2021-05-10 14:51:01 -07:00
Kconfig net: atm: remove support for ZeitNet ZN122x ATM devices 2022-04-27 12:22:56 +01:00
lanai.c atm: lanai: dont run lanai_dev_close if not open 2021-03-01 13:18:54 -08:00
Makefile net: atm: remove support for ZeitNet ZN122x ATM devices 2022-04-27 12:22:56 +01:00
midway.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nicstar.c atm: nicstar: Use kcalloc() to simplify code 2022-02-19 16:38:12 +00:00
nicstar.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nicstarmac.c net: remove comments that mention obsolete __SLOW_DOWN_IO 2022-04-26 17:09:24 -07:00
nicstarmac.copyright
solos-attrlist.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
solos-pci.c atm: solos-pci: Fix potential deadlock on &tx_queue_lock 2023-12-20 17:01:46 +01:00
suni.c atm: delete include/linux/atm_suni.h 2021-03-15 12:43:10 -07:00
suni.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
tonga.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
zeprom.h atm: Fix typo 2021-05-21 13:55:32 -07:00