From: Greg Kroah-Hartman Date: Wed, 15 Apr 2020 17:14:19 +0000 (+0200) Subject: 5.4-stable patches X-Git-Tag: v4.19.116~30 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=517f972d9ad22d5c3999895ff553e5aa606aa25b;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: scsi-mpt3sas-fix-kernel-panic-observed-on-soft-hba-unplug.patch --- diff --git a/queue-5.4/scsi-mpt3sas-fix-kernel-panic-observed-on-soft-hba-unplug.patch b/queue-5.4/scsi-mpt3sas-fix-kernel-panic-observed-on-soft-hba-unplug.patch new file mode 100644 index 00000000000..85228637419 --- /dev/null +++ b/queue-5.4/scsi-mpt3sas-fix-kernel-panic-observed-on-soft-hba-unplug.patch @@ -0,0 +1,77 @@ +From cc41f11a21a51d6869d71e525a7264c748d7c0d7 Mon Sep 17 00:00:00 2001 +From: Sreekanth Reddy +Date: Fri, 27 Mar 2020 05:52:43 -0400 +Subject: scsi: mpt3sas: Fix kernel panic observed on soft HBA unplug + +From: Sreekanth Reddy + +commit cc41f11a21a51d6869d71e525a7264c748d7c0d7 upstream. + +Generic protection fault type kernel panic is observed when user performs +soft (ordered) HBA unplug operation while IOs are running on drives +connected to HBA. + +When user performs ordered HBA removal operation, the kernel calls PCI +device's .remove() call back function where driver is flushing out all the +outstanding SCSI IO commands with DID_NO_CONNECT host byte and also unmaps +sg buffers allocated for these IO commands. + +However, in the ordered HBA removal case (unlike of real HBA hot removal), +HBA device is still alive and hence HBA hardware is performing the DMA +operations to those buffers on the system memory which are already unmapped +while flushing out the outstanding SCSI IO commands and this leads to +kernel panic. + +Don't flush out the outstanding IOs from .remove() path in case of ordered +removal since HBA will be still alive in this case and it can complete the +outstanding IOs. Flush out the outstanding IOs only in case of 'physical +HBA hot unplug' where there won't be any communication with the HBA. + +During shutdown also it is possible that HBA hardware can perform DMA +operations on those outstanding IO buffers which are completed with +DID_NO_CONNECT by the driver from .shutdown(). So same above fix is applied +in shutdown path as well. + +It is safe to drop the outstanding commands when HBA is inaccessible such +as when permanent PCI failure happens, when HBA is in non-operational +state, or when someone does a real HBA hot unplug operation. Since driver +knows that HBA is inaccessible during these cases, it is safe to drop the +outstanding commands instead of waiting for SCSI error recovery to kick in +and clear these outstanding commands. + +Link: https://lore.kernel.org/r/1585302763-23007-1-git-send-email-sreekanth.reddy@broadcom.com +Fixes: c666d3be99c0 ("scsi: mpt3sas: wait for and flush running commands on shutdown/unload") +Cc: stable@vger.kernel.org #v4.14.174+ +Signed-off-by: Sreekanth Reddy +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman + + +--- + drivers/scsi/mpt3sas/mpt3sas_scsih.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c ++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c +@@ -9747,8 +9747,8 @@ static void scsih_remove(struct pci_dev + + ioc->remove_host = 1; + +- mpt3sas_wait_for_commands_to_complete(ioc); +- _scsih_flush_running_cmds(ioc); ++ if (!pci_device_is_present(pdev)) ++ _scsih_flush_running_cmds(ioc); + + _scsih_fw_event_cleanup_queue(ioc); + +@@ -9831,8 +9831,8 @@ scsih_shutdown(struct pci_dev *pdev) + + ioc->remove_host = 1; + +- mpt3sas_wait_for_commands_to_complete(ioc); +- _scsih_flush_running_cmds(ioc); ++ if (!pci_device_is_present(pdev)) ++ _scsih_flush_running_cmds(ioc); + + _scsih_fw_event_cleanup_queue(ioc); + diff --git a/queue-5.4/series b/queue-5.4/series index ecc372cad0a..0108da25487 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -213,3 +213,4 @@ powerpc-64-setup-a-paca-before-parsing-device-tree-etc.patch powerpc-xive-fix-xmon-support-on-the-powernv-platform.patch powerpc-kprobes-ignore-traps-that-happened-in-real-mode.patch powerpc-64-prevent-stack-protection-in-early-boot.patch +scsi-mpt3sas-fix-kernel-panic-observed-on-soft-hba-unplug.patch