[v2,3/6] i2c: jz4780: add IRQ check

Message ID 8416a7d9-2260-b3d1-b14d-4b1ed377c51c@omprussia.ru
State New
Headers show
Series
  • Untitled series #119043
Related show

Commit Message

Sergey Shtylyov April 10, 2021, 8:18 p.m.
The driver neglects to check the result of platform_get_irq()'s call and
blithely passes the negative error codes to devm_request_irq() (which
takes *unsigned* IRQ #), causing it to fail with -EINVAL, overriding
an original error code.  Stop calling devm_request_irq() with invalid
IRQ #s.

Fixes: ba92222ed63a ("i2c: jz4780: Add i2c bus controller driver for Ingenic JZ4780")
Signed-off-by: Sergey Shtylyov <s.shtylyov@omprussia.ru>

---
Changes in version 2:
- new patch.

 drivers/i2c/busses/i2c-jz4780.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Patch

Index: linux/drivers/i2c/busses/i2c-jz4780.c
===================================================================
--- linux.orig/drivers/i2c/busses/i2c-jz4780.c
+++ linux/drivers/i2c/busses/i2c-jz4780.c
@@ -825,7 +825,10 @@  static int jz4780_i2c_probe(struct platf
 
 	jz4780_i2c_writew(i2c, JZ4780_I2C_INTM, 0x0);
 
-	i2c->irq = platform_get_irq(pdev, 0);
+	ret = platform_get_irq(pdev, 0);
+	if (ret < 0)
+		goto err;
+	i2c->irq = ret;
 	ret = devm_request_irq(&pdev->dev, i2c->irq, jz4780_i2c_irq, 0,
 			       dev_name(&pdev->dev), i2c);
 	if (ret)