On Fri, Feb 04, 2022 at 03:41:33PM +0900, William Breathitt Gray wrote: > On Thu, Feb 03, 2022 at 10:00:53AM +0100, Uwe Kleine-König wrote: > > On Thu, Feb 03, 2022 at 04:34:59PM +0900, William Breathitt Gray wrote: > > > Naming the counter device provides a convenient way to identify it in > > > devres_log events and similar situations. This patch names the counter > > > device by combining the prefix "counter" with the counter device's > > > unique ID. > > > > > > Cc: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > > > Signed-off-by: William Breathitt Gray <vilhelm.gray@xxxxxxxxx> > > > --- > > > drivers/counter/counter-core.c | 12 +++++++++++- > > > 1 file changed, 11 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/counter/counter-core.c b/drivers/counter/counter-core.c > > > index 7e0957eea094..2ebd9adf0bd2 100644 > > > --- a/drivers/counter/counter-core.c > > > +++ b/drivers/counter/counter-core.c > > > @@ -22,6 +22,8 @@ > > > #include "counter-chrdev.h" > > > #include "counter-sysfs.h" > > > > > > +#define COUNTER_NAME "counter" > > > + > > > /* Provides a unique ID for each counter device */ > > > static DEFINE_IDA(counter_ida); > > > > > > @@ -104,6 +106,10 @@ struct counter_device *counter_alloc(size_t sizeof_priv) > > > goto err_ida_alloc; > > > dev->id = err; > > > > > > + err = dev_set_name(dev, COUNTER_NAME "%d", dev->id); > > > + if (err) > > > + goto err_dev_set_name; > > > + > > > mutex_init(&counter->ops_exist_lock); > > > dev->type = &counter_device_type; > > > dev->bus = &counter_bus_type; > > > @@ -119,6 +125,9 @@ struct counter_device *counter_alloc(size_t sizeof_priv) > > > > > > err_chrdev_add: > > > > > > + kfree(dev_name(dev)); > > > +err_dev_set_name: > > > + > > > > I think this is wrong as kobject_cleanup frees the name. > > This is true once the device is initialized by device_initialize() but > that won't happen until after counter_chrdev_add() is called; if > counter_chrdev_add() fails, we need to free this memory lest it leak > when we return the error code. Ah I see. Still I would consider it a layer violation to have to know this has to be freed (also about kfree vs. kfree_const). I suggest to move setting the name after the call to device_initialize(). Then the device core cares for that. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ |
Attachment:
signature.asc
Description: PGP signature