mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 20:10:23 +09:00
scsi: mpt3sas: Block PCI config access from userspace during reset
commit 3c8604691d upstream.
While diag reset is in progress there is short duration where all access to
controller's PCI config space from the host needs to be blocked. This is
due to a hardware limitation of the IOC controllers.
Block all access to controller's config space from userland applications by
calling pci_cfg_access_lock() while diag reset is in progress and unlocking
it again after the controller comes back to ready state.
Link: https://lore.kernel.org/r/20210330105137.20728-1-sreekanth.reddy@broadcom.com
Cc: stable@vger.kernel.org #v5.4.108+
Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
702cdaa2c6
commit
b7a1577a1a
@@ -6804,6 +6804,8 @@ _base_diag_reset(struct MPT3SAS_ADAPTER *ioc)
|
||||
|
||||
ioc_info(ioc, "sending diag reset !!\n");
|
||||
|
||||
pci_cfg_access_lock(ioc->pdev);
|
||||
|
||||
drsprintk(ioc, ioc_info(ioc, "clear interrupts\n"));
|
||||
|
||||
count = 0;
|
||||
@@ -6894,10 +6896,12 @@ _base_diag_reset(struct MPT3SAS_ADAPTER *ioc)
|
||||
goto out;
|
||||
}
|
||||
|
||||
pci_cfg_access_unlock(ioc->pdev);
|
||||
ioc_info(ioc, "diag reset: SUCCESS\n");
|
||||
return 0;
|
||||
|
||||
out:
|
||||
pci_cfg_access_unlock(ioc->pdev);
|
||||
ioc_err(ioc, "diag reset: FAILED\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user