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