megaraid_sas : Fix bug in handling return value of pci_enable_msix_range()
Subsystems (3)
PATCH 1/1 megaraid_sas : Fix bug in handling return value of pci_enable_msix_range()
Function pci_enable_msix_range() may return negative values for error conditions. So it's a bug by checking (pci_enable_msix_range() != 0) for success and causes failure to megaraid driver when MSI is disabled.
[ 16.487267] megaraid_sas 0000:02:00.0: Controller type: iMR [ 16.487275] genirq: Flags mismatch irq 0. 00000000 (megasas) vs. 00015a00 (tii mer) [ 16.487347] megasas: Failed to register IRQ for vector 0.
--- drivers/scsi/megaraid/megaraid_sas_base.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/scsi/megaraid/megaraid_sas_base.c +1 -1
@@ -4453,7 +4453,7 @@ static int megasas_init_fw(struct megasas_instance *instance) instance->msixentry[i].entry = i; i =pci_enable_msix_range (instance->pdev, instance->msixentry,1 , instance->msix_vectors); -if (i) +if (i >0 ) instance->msix_vectors = i;else instance->msix_vectors =0 ;
Signature · 1 line
1.7.10.4
Quoted 9 lines
-----Original Message-----
From: Jiang Liu [mailto:[email protected]]
Sent: Monday, November 03, 2014 6:14 PM
To: Neela Syam Kolli; James E.J. Bottomley
Cc: Jiang Liu; Alexander Gordeev; [email protected]; linux- [email protected]; [email protected]
Subject: [PATCH]megaraid_sas: Fix bug in handling return value ofpci_enable_msix_range()
Quoted 5 lines
Function
pci_enable_msix_range()may return negative values for error conditions. So it's a bug by checking (pci_enable_msix_range()!= 0) for success and causes failure to megaraid driver when MSI is disabled.[ 16.487267] megaraid_sas 0000:02:00.0: Controller type: iMR [ 16.487275] genirq: Flags mismatch irq 0. 00000000 (megasas) vs.
00015a00 (tii
Quoted 29 lines
mer)
[ 16.487347] megasas: Failed to register IRQ for vector 0.Fixes 8ae80ed1734b "megaraid: Use pci_enable_msix_range() instead of
pci_enable_msix()"Signed-off-by Jiang Liu <[email protected]>Cc Alexander Gordeev <[email protected]>Cc "Bjorn Helgaas <[email protected]>"Cc <[email protected]> # 3.17---
drivers/scsi/megaraid/megaraid_sas_base.c| 2 +-1 file changed, 1 insertion(+), 1 deletion(-)drivers/scsi/megaraid/megaraid_sas_base.c +1
-1@@ -4453,7 +4453,7 @@ static int megasas_init_fw(struct megasas_instance *instance) instance->msixentry[i].entry = i; i =pci_enable_msix_range (instance->pdev, instance- >msixentry,1 , instance->msix_vectors); -if (i) +if (i >0 ) instance->msix_vectors = i;
Quoted 2 lines
else instance->msix_vectors = 0;
Quoted 2 lines
--
1.7.10.4
Christoph Hellwig
AppliedThanks,
applied to the drivers-for-3.18 branch.