* [PATCH 0/4] i2c: devm_pinctrl_get() usage fixes
@ 2023-08-16 20:04 Yann Sionneau
2023-08-16 20:04 ` [PATCH 1/4] i2c: mv64xxx: devm_pinctrl_get() cannot return NULL Yann Sionneau
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Yann Sionneau @ 2023-08-16 20:04 UTC (permalink / raw)
To: Andi Shyti, Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Michal Simek, Oleksij Rempel,
Pengutronix Kernel Team, Shawn Guo, Sascha Hauer, Fabio Estevam,
NXP Linux Team
Cc: linux-i2c, linux-kernel, linux-arm-kernel, Yann Sionneau
Most of the patches just remove the check for NULL for devm_pinctrl_get()
return value since it cannot return NULL.
One patch also sets back rinfo->pinctrl to NULL when devm_pinctrl_get()
returns an error instead of a valid pointer and the driver does not bail
out.
This last change prevents core i2c code to dereference invalid pointer
because it checks for rinfo->pinctrl validity with "if (rinfo->pinctrl)"
before dereferencing it.
Yann Sionneau (4):
i2c: mv64xxx: devm_pinctrl_get() cannot return NULL
i2c: at91-master: devm_pinctrl_get() cannot return NULL
i2c: i2c-cadence: Reset pinctrl to NULL in case devm_pinctrl_get()
fails
i2c: imx: devm_pinctrl_get() cannot return NULL
drivers/i2c/busses/i2c-at91-master.c | 2 +-
drivers/i2c/busses/i2c-cadence.c | 1 +
drivers/i2c/busses/i2c-imx.c | 2 +-
drivers/i2c/busses/i2c-mv64xxx.c | 2 --
4 files changed, 3 insertions(+), 4 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/4] i2c: mv64xxx: devm_pinctrl_get() cannot return NULL
2023-08-16 20:04 [PATCH 0/4] i2c: devm_pinctrl_get() usage fixes Yann Sionneau
@ 2023-08-16 20:04 ` Yann Sionneau
2023-08-25 21:11 ` Wolfram Sang
2023-08-16 20:04 ` [PATCH 2/4] i2c: at91-master: " Yann Sionneau
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Yann Sionneau @ 2023-08-16 20:04 UTC (permalink / raw)
To: Andi Shyti, Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Michal Simek, Oleksij Rempel,
Pengutronix Kernel Team, Shawn Guo, Sascha Hauer, Fabio Estevam,
NXP Linux Team
Cc: linux-i2c, linux-kernel, linux-arm-kernel, Yann Sionneau
Remove unnecessary check against NULL for devm_pinctrl_get() return value.
Signed-off-by: Yann Sionneau <yann@sionneau.net>
---
drivers/i2c/busses/i2c-mv64xxx.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
index fd8403b07fa6..0c4a0110978f 100644
--- a/drivers/i2c/busses/i2c-mv64xxx.c
+++ b/drivers/i2c/busses/i2c-mv64xxx.c
@@ -947,8 +947,6 @@ static int mv64xxx_i2c_init_recovery_info(struct mv64xxx_i2c_data *drv_data,
return -EPROBE_DEFER;
dev_info(dev, "can't get pinctrl, bus recovery not supported\n");
return PTR_ERR(rinfo->pinctrl);
- } else if (!rinfo->pinctrl) {
- return -ENODEV;
}
drv_data->adapter.bus_recovery_info = rinfo;
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/4] i2c: at91-master: devm_pinctrl_get() cannot return NULL
2023-08-16 20:04 [PATCH 0/4] i2c: devm_pinctrl_get() usage fixes Yann Sionneau
2023-08-16 20:04 ` [PATCH 1/4] i2c: mv64xxx: devm_pinctrl_get() cannot return NULL Yann Sionneau
@ 2023-08-16 20:04 ` Yann Sionneau
2023-09-05 10:42 ` Hari.PrasathGE
2023-08-16 20:04 ` [PATCH 3/4] i2c: i2c-cadence: Reset pinctrl to NULL in case devm_pinctrl_get() fails Yann Sionneau
2023-08-16 20:04 ` [PATCH 4/4] i2c: imx: devm_pinctrl_get() cannot return NULL Yann Sionneau
3 siblings, 1 reply; 8+ messages in thread
From: Yann Sionneau @ 2023-08-16 20:04 UTC (permalink / raw)
To: Andi Shyti, Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Michal Simek, Oleksij Rempel,
Pengutronix Kernel Team, Shawn Guo, Sascha Hauer, Fabio Estevam,
NXP Linux Team
Cc: linux-i2c, linux-kernel, linux-arm-kernel, Yann Sionneau
Remove unnecessary check against NULL for devm_pinctrl_get() return value.
Signed-off-by: Yann Sionneau <yann@sionneau.net>
---
drivers/i2c/busses/i2c-at91-master.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/i2c/busses/i2c-at91-master.c b/drivers/i2c/busses/i2c-at91-master.c
index c0c35785a0dc..b598d2439eb1 100644
--- a/drivers/i2c/busses/i2c-at91-master.c
+++ b/drivers/i2c/busses/i2c-at91-master.c
@@ -832,7 +832,7 @@ static int at91_init_twi_recovery_gpio(struct platform_device *pdev,
struct i2c_bus_recovery_info *rinfo = &dev->rinfo;
rinfo->pinctrl = devm_pinctrl_get(&pdev->dev);
- if (!rinfo->pinctrl || IS_ERR(rinfo->pinctrl)) {
+ if (IS_ERR(rinfo->pinctrl)) {
dev_info(dev->dev, "can't get pinctrl, bus recovery not supported\n");
return PTR_ERR(rinfo->pinctrl);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] i2c: i2c-cadence: Reset pinctrl to NULL in case devm_pinctrl_get() fails
2023-08-16 20:04 [PATCH 0/4] i2c: devm_pinctrl_get() usage fixes Yann Sionneau
2023-08-16 20:04 ` [PATCH 1/4] i2c: mv64xxx: devm_pinctrl_get() cannot return NULL Yann Sionneau
2023-08-16 20:04 ` [PATCH 2/4] i2c: at91-master: " Yann Sionneau
@ 2023-08-16 20:04 ` Yann Sionneau
2023-08-16 20:04 ` [PATCH 4/4] i2c: imx: devm_pinctrl_get() cannot return NULL Yann Sionneau
3 siblings, 0 replies; 8+ messages in thread
From: Yann Sionneau @ 2023-08-16 20:04 UTC (permalink / raw)
To: Andi Shyti, Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Michal Simek, Oleksij Rempel,
Pengutronix Kernel Team, Shawn Guo, Sascha Hauer, Fabio Estevam,
NXP Linux Team
Cc: linux-i2c, linux-kernel, linux-arm-kernel, Yann Sionneau
The core i2c code generally checks if pinctrl has been properly initialized
by just doing 'if (p) some_pinctrl_function(p)'.
In case devm_pinctrl_get() fails, pinctrl variable contains an error
instead of a valid pointer.
To prevent core i2c code to crash, reset back pinctrl pointer to NULL when
this happens.
Signed-off-by: Yann Sionneau <yann@sionneau.net>
---
drivers/i2c/busses/i2c-cadence.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/i2c/busses/i2c-cadence.c b/drivers/i2c/busses/i2c-cadence.c
index 9849f4502570..aa9ae0755674 100644
--- a/drivers/i2c/busses/i2c-cadence.c
+++ b/drivers/i2c/busses/i2c-cadence.c
@@ -1299,6 +1299,7 @@ static int cdns_i2c_probe(struct platform_device *pdev)
if (IS_ERR(id->rinfo.pinctrl)) {
int err = PTR_ERR(id->rinfo.pinctrl);
+ id->rinfo.pinctrl = NULL;
dev_info(&pdev->dev, "can't get pinctrl, bus recovery not supported\n");
if (err != -ENODEV)
return err;
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] i2c: imx: devm_pinctrl_get() cannot return NULL
2023-08-16 20:04 [PATCH 0/4] i2c: devm_pinctrl_get() usage fixes Yann Sionneau
` (2 preceding siblings ...)
2023-08-16 20:04 ` [PATCH 3/4] i2c: i2c-cadence: Reset pinctrl to NULL in case devm_pinctrl_get() fails Yann Sionneau
@ 2023-08-16 20:04 ` Yann Sionneau
2023-08-17 4:46 ` Oleksij Rempel
3 siblings, 1 reply; 8+ messages in thread
From: Yann Sionneau @ 2023-08-16 20:04 UTC (permalink / raw)
To: Andi Shyti, Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Michal Simek, Oleksij Rempel,
Pengutronix Kernel Team, Shawn Guo, Sascha Hauer, Fabio Estevam,
NXP Linux Team
Cc: linux-i2c, linux-kernel, linux-arm-kernel, Yann Sionneau
Remove unnecessary check against NULL for devm_pinctrl_get() return value.
Signed-off-by: Yann Sionneau <yann@sionneau.net>
---
drivers/i2c/busses/i2c-imx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 65128a73e8a3..502276e8ded5 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -1389,7 +1389,7 @@ static int i2c_imx_init_recovery_info(struct imx_i2c_struct *i2c_imx,
struct i2c_bus_recovery_info *rinfo = &i2c_imx->rinfo;
i2c_imx->pinctrl = devm_pinctrl_get(&pdev->dev);
- if (!i2c_imx->pinctrl || IS_ERR(i2c_imx->pinctrl)) {
+ if (IS_ERR(i2c_imx->pinctrl)) {
dev_info(&pdev->dev, "can't get pinctrl, bus recovery not supported\n");
return PTR_ERR(i2c_imx->pinctrl);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] i2c: imx: devm_pinctrl_get() cannot return NULL
2023-08-16 20:04 ` [PATCH 4/4] i2c: imx: devm_pinctrl_get() cannot return NULL Yann Sionneau
@ 2023-08-17 4:46 ` Oleksij Rempel
0 siblings, 0 replies; 8+ messages in thread
From: Oleksij Rempel @ 2023-08-17 4:46 UTC (permalink / raw)
To: Yann Sionneau
Cc: Andi Shyti, Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Michal Simek, Oleksij Rempel,
Pengutronix Kernel Team, Shawn Guo, Sascha Hauer, Fabio Estevam,
NXP Linux Team, linux-i2c, linux-kernel, linux-arm-kernel
On Wed, Aug 16, 2023 at 10:04:10PM +0200, Yann Sionneau wrote:
> Remove unnecessary check against NULL for devm_pinctrl_get() return value.
>
> Signed-off-by: Yann Sionneau <yann@sionneau.net>
> ---
> drivers/i2c/busses/i2c-imx.c | 2 +-
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Thank you!
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
> index 65128a73e8a3..502276e8ded5 100644
> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -1389,7 +1389,7 @@ static int i2c_imx_init_recovery_info(struct imx_i2c_struct *i2c_imx,
> struct i2c_bus_recovery_info *rinfo = &i2c_imx->rinfo;
>
> i2c_imx->pinctrl = devm_pinctrl_get(&pdev->dev);
> - if (!i2c_imx->pinctrl || IS_ERR(i2c_imx->pinctrl)) {
> + if (IS_ERR(i2c_imx->pinctrl)) {
> dev_info(&pdev->dev, "can't get pinctrl, bus recovery not supported\n");
> return PTR_ERR(i2c_imx->pinctrl);
> }
> --
> 2.34.1
>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] i2c: mv64xxx: devm_pinctrl_get() cannot return NULL
2023-08-16 20:04 ` [PATCH 1/4] i2c: mv64xxx: devm_pinctrl_get() cannot return NULL Yann Sionneau
@ 2023-08-25 21:11 ` Wolfram Sang
0 siblings, 0 replies; 8+ messages in thread
From: Wolfram Sang @ 2023-08-25 21:11 UTC (permalink / raw)
To: Yann Sionneau
Cc: Andi Shyti, Codrin Ciubotariu, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Michal Simek, Oleksij Rempel,
Pengutronix Kernel Team, Shawn Guo, Sascha Hauer, Fabio Estevam,
NXP Linux Team, linux-i2c, linux-kernel, linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 272 bytes --]
On Wed, Aug 16, 2023 at 10:04:07PM +0200, Yann Sionneau wrote:
> Remove unnecessary check against NULL for devm_pinctrl_get() return value.
>
> Signed-off-by: Yann Sionneau <yann@sionneau.net>
As discussed elsewhere, it can be NULL when pinctrl is not selected.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/4] i2c: at91-master: devm_pinctrl_get() cannot return NULL
2023-08-16 20:04 ` [PATCH 2/4] i2c: at91-master: " Yann Sionneau
@ 2023-09-05 10:42 ` Hari.PrasathGE
0 siblings, 0 replies; 8+ messages in thread
From: Hari.PrasathGE @ 2023-09-05 10:42 UTC (permalink / raw)
To: yann, andi.shyti, codrin.ciubotariu, Nicolas.Ferre,
alexandre.belloni, claudiu.beznea, michal.simek, linux, kernel,
shawnguo, s.hauer, festevam, linux-imx
Cc: linux-i2c, linux-kernel, linux-arm-kernel
Thanks for your patch.Looks good to me.
Acked-by: Hari Prasath Gujulan Elango <Hari.PrasathGE@microchip.com>
On 17/08/23 1:34 am, Yann Sionneau wrote:
> [You don't often get email from yann@sionneau.net. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
>
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> Remove unnecessary check against NULL for devm_pinctrl_get() return value.
>
> Signed-off-by: Yann Sionneau <yann@sionneau.net>
> ---
> drivers/i2c/busses/i2c-at91-master.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/i2c/busses/i2c-at91-master.c b/drivers/i2c/busses/i2c-at91-master.c
> index c0c35785a0dc..b598d2439eb1 100644
> --- a/drivers/i2c/busses/i2c-at91-master.c
> +++ b/drivers/i2c/busses/i2c-at91-master.c
> @@ -832,7 +832,7 @@ static int at91_init_twi_recovery_gpio(struct platform_device *pdev,
> struct i2c_bus_recovery_info *rinfo = &dev->rinfo;
>
> rinfo->pinctrl = devm_pinctrl_get(&pdev->dev);
> - if (!rinfo->pinctrl || IS_ERR(rinfo->pinctrl)) {
> + if (IS_ERR(rinfo->pinctrl)) {
> dev_info(dev->dev, "can't get pinctrl, bus recovery not supported\n");
> return PTR_ERR(rinfo->pinctrl);
> }
> --
> 2.34.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-09-05 17:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-16 20:04 [PATCH 0/4] i2c: devm_pinctrl_get() usage fixes Yann Sionneau
2023-08-16 20:04 ` [PATCH 1/4] i2c: mv64xxx: devm_pinctrl_get() cannot return NULL Yann Sionneau
2023-08-25 21:11 ` Wolfram Sang
2023-08-16 20:04 ` [PATCH 2/4] i2c: at91-master: " Yann Sionneau
2023-09-05 10:42 ` Hari.PrasathGE
2023-08-16 20:04 ` [PATCH 3/4] i2c: i2c-cadence: Reset pinctrl to NULL in case devm_pinctrl_get() fails Yann Sionneau
2023-08-16 20:04 ` [PATCH 4/4] i2c: imx: devm_pinctrl_get() cannot return NULL Yann Sionneau
2023-08-17 4:46 ` Oleksij Rempel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).