diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2012-08-16 21:46:57 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-08-20 02:33:21 -0700 |
commit | 623d896b361f404de5ed24e312a58646ee04207d (patch) | |
tree | 97096e564b13dd8a91bbf19ec58ee7e29e1133fe /drivers/net/wan/dscc4.c | |
parent | 82a820e8d75f7f3fcd1af24609da79d7d89d5450 (diff) | |
download | op-kernel-dev-623d896b361f404de5ed24e312a58646ee04207d.zip op-kernel-dev-623d896b361f404de5ed24e312a58646ee04207d.tar.gz |
drivers/net/wan/dscc4.c: fix error return code
Move up the initialization of rc so that failure of pci_alloc_consistent
returns -ENOMEM as well.
A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@@
identifier ret;
expression e1,e2;
@@
if (ret < 0)
{ ... return ret; }
... when != ret = e1
when forall
*if(...)
{
... when != ret = e2
* return ret;
}
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wan/dscc4.c')
-rw-r--r-- | drivers/net/wan/dscc4.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/wan/dscc4.c b/drivers/net/wan/dscc4.c index 9eb6479..ef36caf 100644 --- a/drivers/net/wan/dscc4.c +++ b/drivers/net/wan/dscc4.c @@ -774,14 +774,15 @@ static int __devinit dscc4_init_one(struct pci_dev *pdev, } /* Global interrupt queue */ writel((u32)(((IRQ_RING_SIZE >> 5) - 1) << 20), ioaddr + IQLENR1); + + rc = -ENOMEM; + priv->iqcfg = (__le32 *) pci_alloc_consistent(pdev, IRQ_RING_SIZE*sizeof(__le32), &priv->iqcfg_dma); if (!priv->iqcfg) goto err_free_irq_5; writel(priv->iqcfg_dma, ioaddr + IQCFG); - rc = -ENOMEM; - /* * SCC 0-3 private rx/tx irq structures * IQRX/TXi needs to be set soon. Learned it the hard way... |