Re: [PATCH v2] clk: eyeq: fix memory leak in eqc_auxdev_create() error path
From: Brian Masney
Date: Tue Apr 14 2026 - 16:06:20 EST
On Tue, Apr 14, 2026 at 07:49:31PM +0800, Guangshuo Li wrote:
> Hi Brian,
>
> Thanks for reviewing.
>
> On Tue, 14 Apr 2026 at 00:42, Brian Masney <bmasney@xxxxxxxxxx> wrote:
> >
> > There is a leak in the error path here as well. I think this code
> > should be converted to devm_kzalloc().
> >
> > There is no devm_kzalloc_obj() yet, however according to [1] that should
> > be coming soon.
> >
> > [1] https://lore.kernel.org/lkml/20260330154108.GA3389518@xxxxxxxxxxxxxxxxxxxxxxxxxx/
> >
> > Brian
> >
>
> I may be missing something, but I think the auxiliary_device_add() error
> path is already handled here:
>
> ret = auxiliary_device_add(adev);
> if (ret)
> auxiliary_device_uninit(adev);
>
> The auxiliary device also has:
>
> adev->dev.release = eqc_auxdev_release;
>
> with:
>
> static void eqc_auxdev_release(struct device *dev)
> {
> struct auxiliary_device *adev = to_auxiliary_dev(dev);
>
> kfree(adev);
> }
>
> So my understanding was that after a successful auxiliary_device_init(),
> the auxiliary_device_add() failure path should be cleaned up through
> auxiliary_device_uninit(), which would eventually invoke the release
> callback and free adev.
>
> The leak I was trying to fix is only the auxiliary_device_init() failure
> path, where the function returns directly before that cleanup path is
> available.
>
> Please let me know if I overlooked something.
You are right. Sorry about that. My original suggestion still applies
though to move over to the devm variant since that'll allow you to
remove the release callback.
Brian