mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
[SCSI] mpt fusion: Avoid racing when mptsas and mptcl module are loaded in parallel
This patch sets the IOC pointer in drvrdata of pcidev before adding the IOC into the list of IOCs. Without this patch the driver oops when the mptsas and mptctl modules are loaded in parallel. Signed-off-by: Sathya Prakash <sathya.prakash@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
90a95af85f
commit
07df8afa0d
@ -1658,6 +1658,9 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
ioc->active = 0;
|
||||
CHIPREG_WRITE32(&ioc->chip->IntStatus, 0);
|
||||
|
||||
/* Set IOC ptr in the pcidev's driver data. */
|
||||
pci_set_drvdata(ioc->pcidev, ioc);
|
||||
|
||||
/* Set lookup ptr. */
|
||||
list_add_tail(&ioc->list, &ioc_list);
|
||||
|
||||
@ -1999,7 +2002,6 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
|
||||
irq_allocated = 1;
|
||||
ioc->pci_irq = ioc->pcidev->irq;
|
||||
pci_set_master(ioc->pcidev); /* ?? */
|
||||
pci_set_drvdata(ioc->pcidev, ioc);
|
||||
dprintk(ioc, printk(MYIOC_s_INFO_FMT "installed at interrupt "
|
||||
"%d\n", ioc->name, ioc->pcidev->irq));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user