scsi: vmw_pscsi: Rearrange code to avoid multiple calls to free_irq during unload
Subsystems (2)
PATCH 1/1 scsi: vmw_pscsi: Rearrange code to avoid multiple calls to free_irq during unload
Currently pvscsi_remove calls free_irq more than once as pvscsi_release_resources and __pvscsi_shutdown both call pvscsi_shutdown_intr. This results in a 'Trying to free already-free IRQ' warning and stack trace. To solve the problem pvscsi_shutdown_intr has been moved out of pvscsi_release_resources.
--- drivers/scsi/vmw_pvscsi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/scsi/vmw_pvscsi.c +2 -2
@@ -1202,8 +1202,6 @@ static void pvscsi_shutdown_intr(struct pvscsi_adapter *adapter)static void pvscsi_release_resources (struct pvscsi_adapter *adapter) { -pvscsi_shutdown_intr (adapter); -if (adapter->workqueue)destroy_workqueue (adapter->workqueue);
@@ -1534,6 +1532,7 @@ static int pvscsi_probe(struct pci_dev *pdev, const struct pci_device_id *id) out_reset_adapter:ll_adapter_reset (adapter); out_release_resources: +pvscsi_shutdown_intr (adapter);pvscsi_release_resources (adapter);scsi_host_put (host); out_disable_device:
@@ -1542,6 +1541,7 @@ static int pvscsi_probe(struct pci_dev *pdev, const struct pci_device_id *id)return error; out_release_resources_and_disable: +pvscsi_shutdown_intr (adapter);pvscsi_release_resources (adapter); goto out_disable_device; }
Signature · 1 line
2.5.5
Quoted 8 lines · Cathy Avery
Currently
pvscsi_removecallsfree_irqmore than once aspvscsi_release_resourcesand__pvscsi_shutdownboth callpvscsi_shutdown_intr. This results in a 'Trying to free already-free IRQ' warning and stack trace. To solve the problempvscsi_shutdown_intrhas been moved out ofpvscsi_release_resources.Signed-off-by Cathy Avery <[email protected]>Reviewed-by Ewan D. Milne <[email protected]>
That bug has been there since the driver was introduced in 2009. It's so amazing that no one has fixed it until now...
regards,
dan carpenter
Martin K. Petersen
AppliedCathy,
Quoted 5 lines
Currently
pvscsi_removecallsfree_irqmore than once aspvscsi_release_resourcesand__pvscsi_shutdownboth callpvscsi_shutdown_intr. This results in a 'Trying to free already-free IRQ' warning and stack trace. To solve the problempvscsi_shutdown_intrhas been moved out ofpvscsi_release_resources.
Applied to 4.20/scsi-fixes, thanks!
Signature · 1 line
Martin K. Petersen Oracle Linux Engineering