pinctrl: mcp23s08: Use full chunk of memory for regmap configuration
Subsystems (2)
PATCH v2 1/2 pinctrl: mcp23s08: Use full chunk of memory for regmap configuration
It appears that simplification of mcp23s08_spi_regmap_init() made a regression due to wrong size calculation for dev_kmemdup() call. It mises the fact that config variable is already a pointer, thus the sizeof() calculation is wrong and only 4 or 8 bytes were copied.
Fix the parameters to devm_kmemdup() to copy full chunk of memory.
---
v2: fixed few typos in the commit message
drivers/pinctrl/pinctrl-mcp23s08_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/pinctrl/pinctrl-mcp23s08_spi.c +1 -1
@@ -119,7 +119,7 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev,return -EINVAL ; } - copy =devm_kmemdup (dev, &config,sizeof (config),GFP_KERNEL ); + copy =devm_kmemdup (dev, config,sizeof (*config),GFP_KERNEL );if (!copy)return -ENOMEM ;
Signature · 1 line
2.28.0
PATCH v2 2/2 pinctrl: mcp23s08: Print error message when regmap init fails
It is useful for debugging to have the error message printed when regmap initialisation fails. Add it to the driver.
---
v2: no changes
drivers/pinctrl/pinctrl-mcp23s08_spi.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/pinctrl/pinctrl-mcp23s08_spi.c +2 -0
@@ -126,6 +126,8 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev, copy->name = name; mcp->regmap =devm_regmap_init (dev, &mcp23sxx_spi_regmap, mcp, copy); +if (IS_ERR (mcp->regmap)) +dev_err (dev,"regmap init failed for %s\n" , mcp->chip.label);return PTR_ERR_OR_ZERO (mcp->regmap); }
Signature · 1 line
2.28.0
Hi Linus,
You can add my
Thanks,
Martin
Quoted 29 lines · Andy Shevchenko
It appears that simplification of
mcp23s08_spi_regmap_init()made a regression due to wrong size calculation fordev_kmemdup()call. It mises the fact that config variable is already a pointer, thus thesizeof()calculation is wrong and only 4 or 8 bytes were copied.Fix the parameters to
devm_kmemdup()to copy full chunk of memory.Fixes 0874758ecb2b ("pinctrl: mcp23s08: Refactor mcp23s08_spi_regmap_init()")Reported-by Martin Hundebøll <[email protected]>Signed-off-by Andy Shevchenko <[email protected]>---
v2: fixed few typos in the commit messagedrivers/pinctrl/pinctrl-mcp23s08_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/pinctrl/pinctrl-mcp23s08_spi.c +1
-1@@ -119,7 +119,7 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev,return -EINVAL ; } - copy =devm_kmemdup (dev, &config,sizeof (config),GFP_KERNEL ); + copy =devm_kmemdup (dev, config,sizeof (*config),GFP_KERNEL );if (!copy)return -ENOMEM ;
Quoted 5 lines · Martin Hundebøll
Hi Linus,
You can add my
Tested-by Martin Hundebøll <[email protected]>
Thank you!
Linus, below more typo fixes, but I'm not going to send a new version (until you explicitly require), so please take them into consideration when applying.
Quoted 8 lines
Thanks,
MartinQuoted 4 lines · Andy Shevchenko
It appears that simplification of
mcp23s08_spi_regmap_init()made a regression due to wrong size calculation fordev_kmemdup()call.It mises the fact that config variable is already a pointer, thus
mises -> misses
Quoted 3 lines
Quoted 3 lines
the
sizeof()calculation is wrong and only 4 or 8 bytes were copied.Fix the parameters to
devm_kmemdup()to copy full chunk of memory.
copy full -> copy a full
Quoted 23 lines
Quoted 23 lines
Fixes 0874758ecb2b ("pinctrl: mcp23s08: Refactor mcp23s08_spi_regmap_init()")Reported-by Martin Hundebøll <[email protected]>Signed-off-by Andy Shevchenko <[email protected]>---
v2: fixed few typos in the commit messagedrivers/pinctrl/pinctrl-mcp23s08_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/pinctrl/pinctrl-mcp23s08_spi.c +1
-1@@ -119,7 +119,7 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev,return -EINVAL ; } - copy =devm_kmemdup (dev, &config,sizeof (config),GFP_KERNEL ); + copy =devm_kmemdup (dev, config,sizeof (*config),GFP_KERNEL );if (!copy)return -ENOMEM ;
Signature · 2 lines
With Best Regards, Andy Shevchenko
Quoted 5 lines · Andy Shevchenko
It appears that simplification of
mcp23s08_spi_regmap_init()made a regression due to wrong size calculation fordev_kmemdup()call. It mises the fact that config variable is already a pointer, thus thesizeof()calculation is wrong and only 4 or 8 bytes were copied.
Quoted 7 lines
Fix the parameters to
devm_kmemdup()to copy full chunk of memory.Fixes 0874758ecb2b ("pinctrl: mcp23s08: Refactor mcp23s08_spi_regmap_init()")Reported-by Martin Hundebøll <[email protected]>Signed-off-by Andy Shevchenko <[email protected]>---
v2: fixed few typos in the commit message
Patches applied, fixed the extra typos in the process, thanks!
Linus Walleij
Jan Kundrát
Tested-byQuoted 2 lines
Patches applied, fixed the extra typos in the process, thanks!
Hi Linus,
are these patches already pushed? I've checked the gpio and pinctrl trees, and I don't think you've pushed them.
Anyway, they fix a boot-time oops with 5.9.0 for me, so:
With kind regards,
Jan
Quoted 10 lines · Jan Kundrát
Quoted 2 lines
Patches applied, fixed the extra typos in the process, thanks!
Hi Linus,
are these patches already pushed? I've checked the gpio and pinctrl trees, and I don't think you've pushed them.Anyway, they fix a boot-time oops with 5.9.0 for me, so:
Tested-by Jan Kundrát <[email protected]>
I applied them as non-critical fixes but now I will move them to fixes, add your tested-by and merge ASAP.
Yours,
Linus Walleij