Message ID | 4a3658efad8f6247ed8c477717dc2820b72319d0.1704462287.git.christophe.jaillet@wanadoo.fr |
---|---|
State | New |
Headers | show |
Series | thermal: core: Save a few bytes of memory when registering a cooling device | expand |
On Fri, Jan 5, 2024 at 2:45 PM Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote: > > Some *thermal_cooling_device_register() calls pass a string literal as the > 'type' parameter. > > So kstrdup_const() can be used instead of kfree() to avoid a memory > allocation in such cases. > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > --- > drivers/thermal/thermal_core.c | 6 +++--- > include/linux/thermal.h | 2 +- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > index fa88d8707241..d21225ddbf10 100644 > --- a/drivers/thermal/thermal_core.c > +++ b/drivers/thermal/thermal_core.c > @@ -846,7 +846,7 @@ static void thermal_release(struct device *dev) > sizeof("cooling_device") - 1)) { > cdev = to_cooling_device(dev); > thermal_cooling_device_destroy_sysfs(cdev); > - kfree(cdev->type); > + kfree_const(cdev->type); > ida_free(&thermal_cdev_ida, cdev->id); > kfree(cdev); > } > @@ -918,7 +918,7 @@ __thermal_cooling_device_register(struct device_node *np, > cdev->id = ret; > id = ret; > > - cdev->type = kstrdup(type ? type : "", GFP_KERNEL); > + cdev->type = kstrdup_const(type ? type : "", GFP_KERNEL); > if (!cdev->type) { > ret = -ENOMEM; > goto out_ida_remove; > @@ -969,7 +969,7 @@ __thermal_cooling_device_register(struct device_node *np, > out_cooling_dev: > thermal_cooling_device_destroy_sysfs(cdev); > out_cdev_type: > - kfree(cdev->type); > + kfree_const(cdev->type); > out_ida_remove: > ida_free(&thermal_cdev_ida, id); > out_kfree_cdev: > diff --git a/include/linux/thermal.h b/include/linux/thermal.h > index bf84595a4e86..052c72c0fa17 100644 > --- a/include/linux/thermal.h > +++ b/include/linux/thermal.h > @@ -102,7 +102,7 @@ struct thermal_cooling_device_ops { > > struct thermal_cooling_device { > int id; > - char *type; > + const char *type; > unsigned long max_state; > struct device device; > struct device_node *np; > -- Applied as 6.8-rc1 material under a different subject and with some changelog edits. Thanks!
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index fa88d8707241..d21225ddbf10 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -846,7 +846,7 @@ static void thermal_release(struct device *dev) sizeof("cooling_device") - 1)) { cdev = to_cooling_device(dev); thermal_cooling_device_destroy_sysfs(cdev); - kfree(cdev->type); + kfree_const(cdev->type); ida_free(&thermal_cdev_ida, cdev->id); kfree(cdev); } @@ -918,7 +918,7 @@ __thermal_cooling_device_register(struct device_node *np, cdev->id = ret; id = ret; - cdev->type = kstrdup(type ? type : "", GFP_KERNEL); + cdev->type = kstrdup_const(type ? type : "", GFP_KERNEL); if (!cdev->type) { ret = -ENOMEM; goto out_ida_remove; @@ -969,7 +969,7 @@ __thermal_cooling_device_register(struct device_node *np, out_cooling_dev: thermal_cooling_device_destroy_sysfs(cdev); out_cdev_type: - kfree(cdev->type); + kfree_const(cdev->type); out_ida_remove: ida_free(&thermal_cdev_ida, id); out_kfree_cdev: diff --git a/include/linux/thermal.h b/include/linux/thermal.h index bf84595a4e86..052c72c0fa17 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -102,7 +102,7 @@ struct thermal_cooling_device_ops { struct thermal_cooling_device { int id; - char *type; + const char *type; unsigned long max_state; struct device device; struct device_node *np;
Some *thermal_cooling_device_register() calls pass a string literal as the 'type' parameter. So kstrdup_const() can be used instead of kfree() to avoid a memory allocation in such cases. Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- drivers/thermal/thermal_core.c | 6 +++--- include/linux/thermal.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-)