Re: [PATCH V3 23/25] smartpqi: correct system hangs when resuming from hibernation
From: Martin Wilck <hidden>
Date: 2021-01-08 00:35:16
On Thu, 2020-12-10 at 14:36 -0600, Don Brace wrote:
quoted hunk ↗ jump to hunk
From: Kevin Barnett <redacted> * Correct system hangs when resuming from hibernation after first successful hibernation/resume cycle. * Rare condition involving OFA. Reviewed-by: Scott Benesh <redacted> Signed-off-by: Kevin Barnett <redacted> Signed-off-by: Don Brace <don.brace@microchip.com> --- drivers/scsi/smartpqi/smartpqi_init.c | 5 +++++ 1 file changed, 5 insertions(+)diff --git a/drivers/scsi/smartpqi/smartpqi_init.cb/drivers/scsi/smartpqi/smartpqi_init.c index 40ae82470d8c..5ca265babaa2 100644--- a/drivers/scsi/smartpqi/smartpqi_init.c +++ b/drivers/scsi/smartpqi/smartpqi_init.c@@ -8688,6 +8688,11 @@ static __maybe_unused int pqi_resume(structpci_dev *pci_dev) pci_set_power_state(pci_dev, PCI_D0); pci_restore_state(pci_dev); + pqi_ctrl_unblock_device_reset(ctrl_info); + pqi_ctrl_unblock_requests(ctrl_info); + pqi_scsi_unblock_requests(ctrl_info); + pqi_ctrl_unblock_scan(ctrl_info); + return pqi_ctrl_init_resume(ctrl_info); }
Like I said in my comments on 14/25: pqi_ctrl_unblock_scan() and pqi_ctrl_unblock_device_reset() expand to mutex_unlock(). Unlocking an already-unlocked mutex is wrong, and a mutex has to be unlocked by the task that owns the lock. How can you be sure that these conditions are met here? Regards Martin