[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170504160032.GA5147@htj.duckdns.org>
Date: Thu, 4 May 2017 12:00:32 -0400
From: Tejun Heo <tj@...nel.org>
To: Maxime Ripard <maxime.ripard@...e-electrons.com>
Cc: Andre Przywara <andre.przywara@....com>,
Linus Walleij <linus.walleij@...aro.org>,
Icenowy Zheng <icenowy@...c.xyz>,
Adam Borowski <kilobyte@...band.pl>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Chen-Yu Tsai <wens@...e.org>, linux-sunxi@...glegroups.com,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] pinctrl: use non-devm kmalloc versions for free functions
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
Powered by blists - more mailing lists