On Thu, Feb 20, 2025 at 03:44:59PM +0200, Andy Shevchenko wrote: > Add a new helper to remove an action that was added via devm_add_action() > family of calls, but not warn in the cases where action wasn't found since > it is optional and wasn't even added. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > include/linux/device/devres.h | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/include/linux/device/devres.h b/include/linux/device/devres.h > index ae696d10faff..4daebbf7f227 100644 > --- a/include/linux/device/devres.h > +++ b/include/linux/device/devres.h > @@ -145,6 +145,19 @@ void devm_remove_action(struct device *dev, void (*action)(void *), void *data) > WARN_ON(devm_remove_action_nowarn(dev, action, data)); > } > > +/* Same as devm_remove_action(), but doesn't WARN() if action wasn't added before */ > +static inline > +void devm_remove_action_optional(struct device *dev, void (*action)(void *), void *data) > +{ > + int ret; > + > + ret = devm_remove_action_nowarn(dev, action, data); > + if (ret == -ENOENT) > + return; > + > + WARN_ON(ret); > +} Trying to wrap my head around this one, can't the user simply do if (devm_is_action_added()) devm_remove_action/_nowarn(); Raag