2023-06-15 11:04:45

by Claudiu Beznea

[permalink] [raw]
Subject: [PATCH 1/3] pinctrl: mcp23s08: check return value of devm_kasprintf()

devm_kasprintf() returns a pointer to dynamically allocated memory.
Pointer could be NULL in case allocation fails. Check pointer validity.
Identified with coccinelle (kmerr.cocci script).

Fixes: 0f04a81784fe ("pinctrl: mcp23s08: Split to three parts: core, I²C, SPI")
Signed-off-by: Claudiu Beznea <[email protected]>
---
drivers/pinctrl/pinctrl-mcp23s08_spi.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/pinctrl/pinctrl-mcp23s08_spi.c b/drivers/pinctrl/pinctrl-mcp23s08_spi.c
index 9ae10318f6f3..4013ffbfa282 100644
--- a/drivers/pinctrl/pinctrl-mcp23s08_spi.c
+++ b/drivers/pinctrl/pinctrl-mcp23s08_spi.c
@@ -119,6 +119,9 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev,
return -EINVAL;
}

+ if (!name || !mcp->chip.label)
+ return -ENOMEM;
+
copy = devm_kmemdup(dev, config, sizeof(*config), GFP_KERNEL);
if (!copy)
return -ENOMEM;
--
2.34.1



2023-06-15 11:24:36

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH 1/3] pinctrl: mcp23s08: check return value of devm_kasprintf()

On Thu, Jun 15, 2023 at 01:53:31PM +0300, Claudiu Beznea wrote:
> devm_kasprintf() returns a pointer to dynamically allocated memory.
> Pointer could be NULL in case allocation fails. Check pointer validity.
> Identified with coccinelle (kmerr.cocci script).

Not that this may happen, but okay.

...

> @@ -119,6 +119,9 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev,
> return -EINVAL;
> }
>
> + if (!name || !mcp->chip.label)
> + return -ENOMEM;

I prefer to see 4 independent checks for each of the devm_kasprintf() calls.

--
With Best Regards,
Andy Shevchenko