diff options
author | Baruch Siach <baruch@tkos.co.il> | 2009-06-30 14:41:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-30 21:56:01 -0400 |
commit | 79d7f4ee23d41571d9e4663521b5e6604c55729a (patch) | |
tree | be5c6b2c817c1d14a7b3da42c8c09671aa132752 /drivers | |
parent | 66918dcdf91ad101194c749c18099e836ba3de2b (diff) |
gpio: pl061: fix probe error handling code
Note that IRQ has not been initialized when kmalloc() fails.
Also, use DECLARE_BITMAP() to make the code clearer.
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Cc: David Brownell <david-b@pacbell.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpio/pl061.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpio/pl061.c b/drivers/gpio/pl061.c index aa8e7cb020d9..80e483986699 100644 --- a/drivers/gpio/pl061.c +++ b/drivers/gpio/pl061.c | |||
@@ -221,7 +221,7 @@ static int __init pl061_probe(struct amba_device *dev, struct amba_id *id) | |||
221 | struct pl061_gpio *chip; | 221 | struct pl061_gpio *chip; |
222 | struct list_head *chip_list; | 222 | struct list_head *chip_list; |
223 | int ret, irq, i; | 223 | int ret, irq, i; |
224 | static unsigned long init_irq[BITS_TO_LONGS(NR_IRQS)]; | 224 | static DECLARE_BITMAP(init_irq, NR_IRQS); |
225 | 225 | ||
226 | pdata = dev->dev.platform_data; | 226 | pdata = dev->dev.platform_data; |
227 | if (pdata == NULL) | 227 | if (pdata == NULL) |
@@ -280,6 +280,7 @@ static int __init pl061_probe(struct amba_device *dev, struct amba_id *id) | |||
280 | if (!test_and_set_bit(irq, init_irq)) { /* list initialized? */ | 280 | if (!test_and_set_bit(irq, init_irq)) { /* list initialized? */ |
281 | chip_list = kmalloc(sizeof(*chip_list), GFP_KERNEL); | 281 | chip_list = kmalloc(sizeof(*chip_list), GFP_KERNEL); |
282 | if (chip_list == NULL) { | 282 | if (chip_list == NULL) { |
283 | clear_bit(irq, init_irq); | ||
283 | ret = -ENOMEM; | 284 | ret = -ENOMEM; |
284 | goto iounmap; | 285 | goto iounmap; |
285 | } | 286 | } |