On 13.02.2023 17:45, Andy Shevchenko wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > Use devm_kasprintf() instead of kasprintf() to avoid any potential > leaks. At the moment drivers have no remove functionality hence > there is no need for fixes tag. > > While at it, switch to use devm_kasprintf_strarray(). > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Reviewed-by: Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> Tested-by: Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> > --- > drivers/pinctrl/pinctrl-at91.c | 23 +++++++++++++++++------ > 1 file changed, 17 insertions(+), 6 deletions(-) > > diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c > index 2e7debb905d5..5c01765c7a2a 100644 > --- a/drivers/pinctrl/pinctrl-at91.c > +++ b/drivers/pinctrl/pinctrl-at91.c > @@ -18,6 +18,7 @@ > #include <linux/pm.h> > #include <linux/seq_file.h> > #include <linux/slab.h> > +#include <linux/string_helpers.h> > > /* Since we request GPIOs from ourself */ > #include <linux/pinctrl/consumer.h> > @@ -1371,6 +1372,7 @@ static int at91_pinctrl_probe_dt(struct platform_device *pdev, > > static int at91_pinctrl_probe(struct platform_device *pdev) > { > + struct device *dev = &pdev->dev; > struct at91_pinctrl *info; > struct pinctrl_pin_desc *pdesc; > int ret, i, j, k; > @@ -1394,9 +1396,19 @@ static int at91_pinctrl_probe(struct platform_device *pdev) > return -ENOMEM; > > for (i = 0, k = 0; i < gpio_banks; i++) { > + char **names; > + > + names = devm_kasprintf_strarray(dev, "pio", MAX_NB_GPIO_PER_BANK); > + if (!names) > + return -ENOMEM; > + > for (j = 0; j < MAX_NB_GPIO_PER_BANK; j++, k++) { > + char *name = names[j]; > + > + strreplace(name, '-', i + 'A'); > + > pdesc->number = k; > - pdesc->name = kasprintf(GFP_KERNEL, "pio%c%d", i + 'A', j); > + pdesc->name = name; > pdesc++; > } > } > @@ -1797,7 +1809,8 @@ static const struct of_device_id at91_gpio_of_match[] = { > > static int at91_gpio_probe(struct platform_device *pdev) > { > - struct device_node *np = pdev->dev.of_node; > + struct device *dev = &pdev->dev; > + struct device_node *np = dev->of_node; > struct at91_gpio_chip *at91_chip = NULL; > struct gpio_chip *chip; > struct pinctrl_gpio_range *range; > @@ -1866,16 +1879,14 @@ static int at91_gpio_probe(struct platform_device *pdev) > chip->ngpio = ngpio; > } > > - names = devm_kcalloc(&pdev->dev, chip->ngpio, sizeof(char *), > - GFP_KERNEL); > - > + names = devm_kasprintf_strarray(dev, "pio", chip->ngpio); > if (!names) { > ret = -ENOMEM; > goto clk_enable_err; > } > > for (i = 0; i < chip->ngpio; i++) > - names[i] = devm_kasprintf(&pdev->dev, GFP_KERNEL, "pio%c%d", alias_idx + 'A', i); > + strreplace(names[i], '-', alias_idx + 'A'); > > chip->names = (const char *const *)names; > > -- > 2.39.1 >