Re: [PATCH 2/2] gpiolib: use kstrdup_const() for gpio_device label

From: Joe Perches
Date: Wed Dec 13 2017 - 14:44:49 EST


On Wed, 2017-12-13 at 12:25 +0100, Bartosz Golaszewski wrote:
> Users often pass a pointer to a static string to gpiochip_add_data()
> family of functions. Avoid unnecessary memory allocations with the
> provided helper routine.
[]
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
[]
> @@ -1171,9 +1171,9 @@ int gpiochip_add_data_with_key(struct gpio_chip *chip, void *data,
> }
>
> if (chip->label)
> - gdev->label = kstrdup(chip->label, GFP_KERNEL);
> + gdev->label = kstrdup_const(chip->label, GFP_KERNEL);
> else
> - gdev->label = kstrdup("unknown", GFP_KERNEL);
> + gdev->label = kstrdup_const("unknown", GFP_KERNEL);

A plain ?: would be more intelligible
and a bit smaller object code too.

ie:
gdev->label = kstrdup_const(chip->label ?: "unknown", GFP_KERNEL);

> if (!gdev->label) {
> status = -ENOMEM;
> goto err_free_descs;