Message ID | 20210330105137.20728-1-sreekanth.reddy@broadcom.com |
---|---|
State | New |
Headers | show |
Series | mpt3sas: Block PCI cfg access from userspace during reset | expand |
On Tue, 30 Mar 2021 16:21:37 +0530, Sreekanth Reddy wrote: > 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 IOC controllers. > > With this patch, driver will 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 after controller comes back to ready state. Applied to 5.13/scsi-queue, thanks! [1/1] mpt3sas: Block PCI cfg access from userspace during reset https://git.kernel.org/mkp/scsi/c/3c8604691d2a
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index ac0eef975f17..b6beacfd0f62 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -7252,6 +7252,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; @@ -7342,10 +7344,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; }
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 IOC controllers. With this patch, driver will 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 after controller comes back to ready state. Cc: stable@vger.kernel.org #v5.4.108+ Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> --- drivers/scsi/mpt3sas/mpt3sas_base.c | 4 ++++ 1 file changed, 4 insertions(+)