Re: [v2 1/2] soc: fsl: dpio: Use scope-based resource management in dpaa2_io_store_create()
From: Ioana Ciornei
Date: Tue Jul 28 2026 - 06:55:39 EST
On Tue, Jul 28, 2026 at 08:55:38AM +0200, Markus Elfring wrote:
> >> https://elixir.bootlin.com/linux/v7.2-rc4/source/include/linux/cleanup.h#L142-L146
> >
> > The context for the recommendation linked by you is (also from
> > cleanup.h):
> >
> > * "When multiple variables in the same scope have cleanup attributes,
> > * at exit from the scope their associated cleanup functions are run in
> > * reverse order of definition (last defined, first cleanup)."
> > *
> > * When the unwind order matters it requires that variables be defined
> > * mid-function scope rather than at the top of the file. Take the
> > * following example and notice the bug highlighted by "!!"::
> >
> > Which is not the case of these simple functions which only need a kfree.
> How will development concerns evolve further also according to previous clarification attempts?
>
> Clarifying confusion of our variable placement rules caused by cleanup.h
> https://lore.kernel.org/ksummit/CAHk-=whPZoi03ZwphxiW6cuWPtC3nyKYS8_BThgztCdgPWP1WA@xxxxxxxxxxxxxx/
> https://lkml.org/lkml/2025/11/18/1766
My preference still stands and I do not think they contradict the views
expressed in the above links:
- Variables which do not have anything to do with cleanup.h should still
be defined at the start of the function. This is the case of the
qman_256_cycles_per_ns which you moved in 2/2 without any motive.
- In the case of a variable used with __free, if it can be done, I
prefer to see the definition and initialization done at the start of
the function.
For example:
struct dpaa2_io *obj __free(kfree) = kmalloc_obj(*obj);
u32 qman_256_cycles_per_ns;
if (!obj)
return NULL;
I am not going to engage past this message.
Ioana