omap_i2c_init() can fail. Handle this error in omap_i2c_probe().
Fixes: 010d442c4a29 ("i2c: New bus driver for TI OMAP boards")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only.
---
drivers/i2c/busses/i2c-omap.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 8b01df3cc8e9..485313d872e5 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -1472,7 +1472,11 @@ omap_i2c_probe(struct platform_device *pdev)
}
/* reset ASAP, clearing any IRQs */
- omap_i2c_init(omap);
+ r = omap_i2c_init(omap);
+ if (r) {
+ dev_err(omap->dev, "failure to initialize i2c: %d\n", r);
+ goto err_mux_state_deselect;
+ }
if (omap->rev < OMAP_I2C_OMAP1_REV_2)
r = devm_request_irq(&pdev->dev, omap->irq, omap_i2c_omap1_isr,
@@ -1515,6 +1519,7 @@ omap_i2c_probe(struct platform_device *pdev)
err_unuse_clocks:
omap_i2c_write_reg(omap, OMAP_I2C_CON_REG, 0);
+err_mux_state_deselect:
if (omap->mux_state)
mux_state_deselect(omap->mux_state);
err_put_pm:
--
2.50.0
Hi, On Sat, Jul 05, 2025 at 09:57:37AM +0200, Christophe JAILLET wrote: > omap_i2c_init() can fail. Handle this error in omap_i2c_probe(). > > Fixes: 010d442c4a29 ("i2c: New bus driver for TI OMAP boards") > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > --- > Compile tested only. > --- > drivers/i2c/busses/i2c-omap.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c > index 8b01df3cc8e9..485313d872e5 100644 > --- a/drivers/i2c/busses/i2c-omap.c > +++ b/drivers/i2c/busses/i2c-omap.c > @@ -1472,7 +1472,11 @@ omap_i2c_probe(struct platform_device *pdev) > } > > /* reset ASAP, clearing any IRQs */ > - omap_i2c_init(omap); > + r = omap_i2c_init(omap); > + if (r) { > + dev_err(omap->dev, "failure to initialize i2c: %d\n", r); Error paths in omap_i2c_init already print a message and error code, so this is log is redundant. A. > + goto err_mux_state_deselect; > + } > > if (omap->rev < OMAP_I2C_OMAP1_REV_2) > r = devm_request_irq(&pdev->dev, omap->irq, omap_i2c_omap1_isr, > @@ -1515,6 +1519,7 @@ omap_i2c_probe(struct platform_device *pdev) > > err_unuse_clocks: > omap_i2c_write_reg(omap, OMAP_I2C_CON_REG, 0); > +err_mux_state_deselect: > if (omap->mux_state) > mux_state_deselect(omap->mux_state); > err_put_pm: > -- > 2.50.0 > >
Am Wed, 9 Jul 2025 21:25:28 +0300 schrieb Aaro Koskinen <aaro.koskinen@iki.fi>: > Hi, > > On Sat, Jul 05, 2025 at 09:57:37AM +0200, Christophe JAILLET wrote: > > omap_i2c_init() can fail. Handle this error in omap_i2c_probe(). > > > > Fixes: 010d442c4a29 ("i2c: New bus driver for TI OMAP boards") > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > > --- > > Compile tested only. > > --- > > drivers/i2c/busses/i2c-omap.c | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c > > index 8b01df3cc8e9..485313d872e5 100644 > > --- a/drivers/i2c/busses/i2c-omap.c > > +++ b/drivers/i2c/busses/i2c-omap.c > > @@ -1472,7 +1472,11 @@ omap_i2c_probe(struct platform_device *pdev) > > } > > > > /* reset ASAP, clearing any IRQs */ > > - omap_i2c_init(omap); > > + r = omap_i2c_init(omap); > > + if (r) { > > + dev_err(omap->dev, "failure to initialize i2c: %d\n", r); > > Error paths in omap_i2c_init already print a message and error code, > so this is log is redundant. > And I have never seen these in normal operation, so adding that error check should be safe. Regards, Andreas
Hi Aaro, > > diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c > > index 8b01df3cc8e9..485313d872e5 100644 > > --- a/drivers/i2c/busses/i2c-omap.c > > +++ b/drivers/i2c/busses/i2c-omap.c > > @@ -1472,7 +1472,11 @@ omap_i2c_probe(struct platform_device *pdev) > > } > > > > /* reset ASAP, clearing any IRQs */ > > - omap_i2c_init(omap); > > + r = omap_i2c_init(omap); > > + if (r) { > > + dev_err(omap->dev, "failure to initialize i2c: %d\n", r); > > Error paths in omap_i2c_init already print a message and error code, > so this is log is redundant. Good point! I will take care of it, no need to send a v2. Thanks, Andi
© 2016 - 2025 Red Hat, Inc.