mirror of
https://github.com/torvalds/linux.git
synced 2024-09-21 07:23:06 +00:00
78d0f94902
This patch prevents the system from crashing when unloading the ISM module.
How to reproduce: Attach an ISM device and execute 'rmmod ism'.
Error-Log:
- Trying to free already-free IRQ 0
- WARNING: CPU: 1 PID: 966 at kernel/irq/manage.c:1890 free_irq+0x140/0x540
After calling ism_dev_exit() for each ISM device in the exit routine,
pci_unregister_driver() will execute ism_remove() for each ISM device.
Because ism_remove() also calls ism_dev_exit(),
free_irq(pci_irq_vector(pdev, 0), ism) is called twice for each ISM
device. This results in a crash with the error
'Trying to free already-free IRQ'.
In the exit routine, it is enough to call pci_unregister_driver()
because it ensures that ism_dev_exit() is called once per
ISM device.
Cc: <stable@vger.kernel.org> # 6.3+
Fixes:
|
||
---|---|---|
.. | ||
ctcm_dbug.c | ||
ctcm_dbug.h | ||
ctcm_fsms.c | ||
ctcm_fsms.h | ||
ctcm_main.c | ||
ctcm_main.h | ||
ctcm_mpc.c | ||
ctcm_mpc.h | ||
ctcm_sysfs.c | ||
fsm.c | ||
fsm.h | ||
ism_drv.c | ||
ism.h | ||
Kconfig | ||
lcs.c | ||
lcs.h | ||
Makefile | ||
netiucv.c | ||
qeth_core_main.c | ||
qeth_core_mpc.c | ||
qeth_core_mpc.h | ||
qeth_core_sys.c | ||
qeth_core.h | ||
qeth_ethtool.c | ||
qeth_l2_main.c | ||
qeth_l2_sys.c | ||
qeth_l2.h | ||
qeth_l3_main.c | ||
qeth_l3_sys.c | ||
qeth_l3.h | ||
smsgiucv_app.c | ||
smsgiucv.c | ||
smsgiucv.h |