On Wed, Sep 04, 2024 at 12:50:44PM +0200, Javier Carrasco wrote: > Hi Dmitry, > > On 04/09/2024 06:48, Dmitry Torokhov wrote: > > Use __free(fwnode_handle) cleanup facility to ensure that references to > > acquired fwnodes are dropped at appropriate times automatically. > > > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> > > --- > > drivers/input/misc/iqs7222.c | 30 ++++++++++++++---------------- > > 1 file changed, 14 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/input/misc/iqs7222.c b/drivers/input/misc/iqs7222.c > > index 9ca5a743f19f..d9b87606ff7a 100644 > > --- a/drivers/input/misc/iqs7222.c > > +++ b/drivers/input/misc/iqs7222.c > > ... > > > @@ -2818,9 +2813,9 @@ static int iqs7222_parse_reg_grp(struct iqs7222_private *iqs7222, > > int reg_grp_index) > > { > > struct i2c_client *client = iqs7222->client; > > - struct fwnode_handle *reg_grp_node; > > int error; > > > > Nit: reg_grp_node could stay at the top (where it used to be), as you > are assigning it to NULL because there are no sensible assignments at > this point. > > > + struct fwnode_handle *reg_grp_node __free(fwnode_handle) = NULL; > > if (iqs7222_reg_grp_names[reg_grp]) { > > char reg_grp_name[16]; I think this follows Linus' guidance (in spirit) to combine declaration and initialization for objects using __cleanup(). If it was Rust I'd written it as let reg_grp_node = if let Some(...) { ... } else { ... }; so declaration and initialization would be the same, but with C this is the closest I could come up with. Thanks. -- Dmitry