Re: [PATCH v3 3/4] iio: adc: ad799x: use devm_add_action_or_reset for regulators

From: Andy Shevchenko

Date: Mon Mar 02 2026 - 08:21:56 EST


On Mon, Mar 02, 2026 at 06:36:31PM +0530, Archit Anant wrote:
> Convert the manual regulator_disable() handling to use
> devm_add_action_or_reset(). This guarantees that the regulators are
> disabled in the correct reverse order of allocation during device
> teardown or probe failure.
>
> This removes the need to manually disable the regulators in the
> remove() function.

...

> +static void ad799x_reg_disable(void *data)
> +{

> + struct regulator *reg = data;

Unneeded.


> + regulator_disable(reg);
> +}

static void ad799x_reg_disable(void *reg)
{
regulator_disable(reg);
}

...

> static int ad799x_probe(struct i2c_client *client)

With

struct device *dev = &client->dev;

it will look better.

...

> + ret = devm_add_action_or_reset(&client->dev, ad799x_reg_disable, st->reg);

ret = devm_add_action_or_reset(dev, ad799x_reg_disable, st->reg);

> + if (ret)
> + return ret;

...

> + ret = devm_add_action_or_reset(&client->dev, ad799x_reg_disable,
> + st->vref);

ret = devm_add_action_or_reset(dev, ad799x_reg_disable, st->vref);

> + if (ret)
> + goto error_disable_reg;

--
With Best Regards,
Andy Shevchenko