Message ID | 20180510125201.19707-1-colin.king@canonical.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Series | [next] net: aquantia: fix unsigned numvecs comparison with less than zero | expand |
Thanks, Colin! > The comparison of numvecs < 0 is always false because numvecs is a u32 > and hence the error return from a failed call to pci_alloc_irq_vectores > is never detected. Fix this by using the signed int ret to handle the > error return and assign numvecs to err. > > Detected by CoverityScan, CID#1468650 ("Unsigned compared against 0") > > Fixes: a09bd81b5413 ("net: aquantia: Limit number of vectors to actually allocated irqs") > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- Acked-by: Igor Russkikh <igor.russkikh@aquantia.com>
From: Colin King <colin.king@canonical.com> Date: Thu, 10 May 2018 13:52:01 +0100 > From: Colin Ian King <colin.king@canonical.com> > > The comparison of numvecs < 0 is always false because numvecs is a u32 > and hence the error return from a failed call to pci_alloc_irq_vectores > is never detected. Fix this by using the signed int ret to handle the > error return and assign numvecs to err. > > Detected by CoverityScan, CID#1468650 ("Unsigned compared against 0") > > Fixes: a09bd81b5413 ("net: aquantia: Limit number of vectors to actually allocated irqs") > Signed-off-by: Colin Ian King <colin.king@canonical.com> This doesn't apply to net-next.
>> Fixes: a09bd81b5413 ("net: aquantia: Limit number of vectors to actually allocated irqs") >> Signed-off-by: Colin Ian King <colin.king@canonical.com> > > This doesn't apply to net-next. > Colin, believe thats because you should target to net, not net-next. BR, Igor
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c index a50e08bb4748..750007513f9d 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c @@ -267,14 +267,13 @@ static int aq_pci_probe(struct pci_dev *pdev, numvecs = min(numvecs, num_online_cpus()); /*enable interrupts */ #if !AQ_CFG_FORCE_LEGACY_INT - numvecs = pci_alloc_irq_vectors(self->pdev, 1, numvecs, - PCI_IRQ_MSIX | PCI_IRQ_MSI | - PCI_IRQ_LEGACY); + err = pci_alloc_irq_vectors(self->pdev, 1, numvecs, + PCI_IRQ_MSIX | PCI_IRQ_MSI | + PCI_IRQ_LEGACY); - if (numvecs < 0) { - err = numvecs; + if (err < 0) goto err_hwinit; - } + numvecs = err; #endif self->irqvecs = numvecs;