Commit 272df502bcd1fbb1b95facc92bd861d604be8871
Committed by
Grant Likely
1 parent
0ce790e7d7
Exists in
master
and in
39 other branches
gpio/pca953x: fix error handling path in probe() call
If the device fails to respond, then the error path tries to remove an interrupt that never got registered, which causes an backtrace from the interrupt handling code. Fix this by ensuring that the cleanup path has two labels and use the correct path as needed. fixes the following error: WARNING: at kernel/irq/manage.c:908 __free_irq+0x80/0x160() Trying to free already-free IRQ 0 Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Showing 1 changed file with 3 additions and 2 deletions Side-by-side Diff
drivers/gpio/pca953x.c
... | ... | @@ -558,7 +558,7 @@ |
558 | 558 | |
559 | 559 | ret = gpiochip_add(&chip->gpio_chip); |
560 | 560 | if (ret) |
561 | - goto out_failed; | |
561 | + goto out_failed_irq; | |
562 | 562 | |
563 | 563 | if (pdata->setup) { |
564 | 564 | ret = pdata->setup(client, chip->gpio_chip.base, |
565 | 565 | |
... | ... | @@ -570,8 +570,9 @@ |
570 | 570 | i2c_set_clientdata(client, chip); |
571 | 571 | return 0; |
572 | 572 | |
573 | -out_failed: | |
573 | +out_failed_irq: | |
574 | 574 | pca953x_irq_teardown(chip); |
575 | +out_failed: | |
575 | 576 | kfree(chip->dyn_pdata); |
576 | 577 | kfree(chip); |
577 | 578 | return ret; |