[PATCH] pinctrl: use non-devm kmalloc versions for free functions

Tejun Heo tj at kernel.org
Thu May 4 09:00:32 PDT 2017


Hello,

On Thu, May 04, 2017 at 02:03:14PM +0200, Maxime Ripard wrote:
> > @@ -704,6 +704,7 @@ static void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev)
> >  		radix_tree_delete(&pctldev->pin_group_tree, indices[i]);
> >  		devm_kfree(pctldev->dev, group);
> >  	}
> > +	kfree(indices);
> 
> We use devm_kfree for other allocations done here, maybe we can just
> have the same thing here? We would be consistant, and we would still
> keep the resource tracking.

It doesn't make any sense to use the managed functions from the
release functions and if you're always matching devm_kmalloc() with
devm_kfree(), the only thing it'd do is confusing its readers.

And the function in question just looks weird to me - give up on
freeing resources if memory allocation fails?  And why call
devm_kfree() on objects which are being released anyway?  Or if the
group can be released w/o the device being detached, why use devm
allocations on the members at all?

As for removal, can't it just call radix_tree_iter_delete() while
iterating?  Why allocate memory to iterate and store all indices and
to look them up again and delete them?

Thanks.

-- 
tejun



More information about the linux-arm-kernel mailing list