diff options
author | David Vrabel <dvrabel@arcom.com> | 2006-01-19 12:56:29 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-03-20 16:42:57 -0500 |
commit | 489447380a2921ec0e9154f773c44ab3167ede4b (patch) | |
tree | 10edc2bca15765dae7699b8d26cf3d828869bc3c /drivers/net | |
parent | 305b3228f9ff4d59f49e6d34a7034d44ee8ce2f0 (diff) |
[PATCH] handle errors returned by platform_get_irq*()
platform_get_irq*() now returns on -ENXIO when the resource cannot be
found. Ensure all users of platform_get_irq*() handle this error
appropriately.
Signed-off-by: David Vrabel <dvrabel@arcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/arm/am79c961a.c | 4 | ||||
-rw-r--r-- | drivers/net/fs_enet/mac-fcc.c | 2 | ||||
-rw-r--r-- | drivers/net/fs_enet/mac-fec.c | 2 | ||||
-rw-r--r-- | drivers/net/fs_enet/mac-scc.c | 2 | ||||
-rw-r--r-- | drivers/net/gianfar.c | 4 | ||||
-rw-r--r-- | drivers/net/smc91x.c | 4 |
6 files changed, 17 insertions, 1 deletions
diff --git a/drivers/net/arm/am79c961a.c b/drivers/net/arm/am79c961a.c index 53e3afc1b7b7..09d5c3f26985 100644 --- a/drivers/net/arm/am79c961a.c +++ b/drivers/net/arm/am79c961a.c | |||
@@ -696,7 +696,9 @@ static int __init am79c961_probe(struct platform_device *pdev) | |||
696 | dev->base_addr = res->start; | 696 | dev->base_addr = res->start; |
697 | dev->irq = platform_get_irq(pdev, 0); | 697 | dev->irq = platform_get_irq(pdev, 0); |
698 | 698 | ||
699 | ret = -ENODEV; | 699 | ret = -ENODEV; |
700 | if (dev->irq < 0) | ||
701 | goto nodev; | ||
700 | if (!request_region(dev->base_addr, 0x18, dev->name)) | 702 | if (!request_region(dev->base_addr, 0x18, dev->name)) |
701 | goto nodev; | 703 | goto nodev; |
702 | 704 | ||
diff --git a/drivers/net/fs_enet/mac-fcc.c b/drivers/net/fs_enet/mac-fcc.c index e67b1d06611c..95e2bb8dd7b4 100644 --- a/drivers/net/fs_enet/mac-fcc.c +++ b/drivers/net/fs_enet/mac-fcc.c | |||
@@ -118,6 +118,8 @@ static int do_pd_setup(struct fs_enet_private *fep) | |||
118 | 118 | ||
119 | /* Fill out IRQ field */ | 119 | /* Fill out IRQ field */ |
120 | fep->interrupt = platform_get_irq(pdev, 0); | 120 | fep->interrupt = platform_get_irq(pdev, 0); |
121 | if (fep->interrupt < 0) | ||
122 | return -EINVAL; | ||
121 | 123 | ||
122 | /* Attach the memory for the FCC Parameter RAM */ | 124 | /* Attach the memory for the FCC Parameter RAM */ |
123 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "fcc_pram"); | 125 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "fcc_pram"); |
diff --git a/drivers/net/fs_enet/mac-fec.c b/drivers/net/fs_enet/mac-fec.c index 2e8f44469699..3dad69dfdb2c 100644 --- a/drivers/net/fs_enet/mac-fec.c +++ b/drivers/net/fs_enet/mac-fec.c | |||
@@ -144,6 +144,8 @@ static int do_pd_setup(struct fs_enet_private *fep) | |||
144 | 144 | ||
145 | /* Fill out IRQ field */ | 145 | /* Fill out IRQ field */ |
146 | fep->interrupt = platform_get_irq_byname(pdev,"interrupt"); | 146 | fep->interrupt = platform_get_irq_byname(pdev,"interrupt"); |
147 | if (fep->interrupt < 0) | ||
148 | return -EINVAL; | ||
147 | 149 | ||
148 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); | 150 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); |
149 | fep->fec.fecp =(void*)r->start; | 151 | fep->fec.fecp =(void*)r->start; |
diff --git a/drivers/net/fs_enet/mac-scc.c b/drivers/net/fs_enet/mac-scc.c index a3897fda71fa..a772b286f96d 100644 --- a/drivers/net/fs_enet/mac-scc.c +++ b/drivers/net/fs_enet/mac-scc.c | |||
@@ -118,6 +118,8 @@ static int do_pd_setup(struct fs_enet_private *fep) | |||
118 | 118 | ||
119 | /* Fill out IRQ field */ | 119 | /* Fill out IRQ field */ |
120 | fep->interrupt = platform_get_irq_byname(pdev, "interrupt"); | 120 | fep->interrupt = platform_get_irq_byname(pdev, "interrupt"); |
121 | if (fep->interrupt < 0) | ||
122 | return -EINVAL; | ||
121 | 123 | ||
122 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); | 124 | r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); |
123 | fep->scc.sccp = (void *)r->start; | 125 | fep->scc.sccp = (void *)r->start; |
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 0e8e3fcde9ff..771e25d8c417 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
@@ -193,8 +193,12 @@ static int gfar_probe(struct platform_device *pdev) | |||
193 | priv->interruptTransmit = platform_get_irq_byname(pdev, "tx"); | 193 | priv->interruptTransmit = platform_get_irq_byname(pdev, "tx"); |
194 | priv->interruptReceive = platform_get_irq_byname(pdev, "rx"); | 194 | priv->interruptReceive = platform_get_irq_byname(pdev, "rx"); |
195 | priv->interruptError = platform_get_irq_byname(pdev, "error"); | 195 | priv->interruptError = platform_get_irq_byname(pdev, "error"); |
196 | if (priv->interruptTransmit < 0 || priv->interruptReceive < 0 || priv->interruptError < 0) | ||
197 | goto regs_fail; | ||
196 | } else { | 198 | } else { |
197 | priv->interruptTransmit = platform_get_irq(pdev, 0); | 199 | priv->interruptTransmit = platform_get_irq(pdev, 0); |
200 | if (priv->interruptTransmit < 0) | ||
201 | goto regs_fail; | ||
198 | } | 202 | } |
199 | 203 | ||
200 | /* get a pointer to the register memory */ | 204 | /* get a pointer to the register memory */ |
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c index 7ec08127c9d6..75e9b3b910cc 100644 --- a/drivers/net/smc91x.c +++ b/drivers/net/smc91x.c | |||
@@ -2221,6 +2221,10 @@ static int smc_drv_probe(struct platform_device *pdev) | |||
2221 | 2221 | ||
2222 | ndev->dma = (unsigned char)-1; | 2222 | ndev->dma = (unsigned char)-1; |
2223 | ndev->irq = platform_get_irq(pdev, 0); | 2223 | ndev->irq = platform_get_irq(pdev, 0); |
2224 | if (ndev->irq < 0) { | ||
2225 | ret = -ENODEV; | ||
2226 | goto out_free_netdev; | ||
2227 | } | ||
2224 | 2228 | ||
2225 | ret = smc_request_attrib(pdev); | 2229 | ret = smc_request_attrib(pdev); |
2226 | if (ret) | 2230 | if (ret) |