On Thu, Jul 2, 2020 at 2:44 PM Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > On Mon, Jun 29, 2020 at 08:50:08AM +0200, Bartosz Golaszewski wrote: > > From: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> > > > > Shrink pmbus code by using devm_hwmon_device_register_with_groups() > > and devm_krealloc() instead of their non-managed variants. > > > > Signed-off-by: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx> > > --- > > drivers/hwmon/pmbus/pmbus_core.c | 28 +++++++++------------------- > > 1 file changed, 9 insertions(+), 19 deletions(-) > > > > diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c > > index a420877ba533..225d0ac162c7 100644 > > --- a/drivers/hwmon/pmbus/pmbus_core.c > > +++ b/drivers/hwmon/pmbus/pmbus_core.c > > @@ -1022,9 +1022,9 @@ static int pmbus_add_attribute(struct pmbus_data *data, struct attribute *attr) > > { > > if (data->num_attributes >= data->max_attributes - 1) { > > int new_max_attrs = data->max_attributes + PMBUS_ATTR_ALLOC_SIZE; > > - void *new_attrs = krealloc(data->group.attrs, > > - new_max_attrs * sizeof(void *), > > - GFP_KERNEL); > > + void *new_attrs = devm_krealloc(data->dev, data->group.attrs, > > + new_max_attrs * sizeof(void *), > > + GFP_KERNEL); > > dynamic sysfs attributes in a devm-allocated chunk of memory? What > could go wrong... > So what *can* go wrong, which it couldn't before this patch? The drivers in this directory kfree() this memory anyway on driver detach. Using devm here is equivalent to the previous behavior - only that the memory is freed after remove() not inside it. > Anyway, is this the only in-kernel user that you could find for this > function? If so, it feels like it's a lot of extra work for no real > gain. > No. There are around 100 calls to krealloc() in drivers/. I assume that at least half of these are called with an attached struct device. I chose this driver, because it has a commit in its history that explicitly says that it would use devm_krealloc() if it were available (commit 85cfb3a83536 ("hwmon: (pmbus) Use krealloc to allocate attribute memory"). I didn't want to spend a lot of time on converting other users in case this patch gets rejected. Bartosz