On Fri, Aug 9, 2019 at 11:11 PM Mark Brown <broo...@kernel.org> wrote: > > On Fri, Aug 09, 2019 at 11:03:52AM +0800, Chuhong Yuan wrote: > > I wrote a coccinelle script to detect possible chances > > of utilizing devm_() APIs to simplify the driver. > > The script found 147 drivers in total and 22 of them > > have be patched. > > > Within the 125 left ones, at least 31 of them (24.8%) > > are hindered from benefiting from devm_() APIs because > > of lack of a devres version of regulator_enable(). > > I'm not super keen on managed versions of these functions since they're > very likely to cause reference counting issues between the probe/remove > path and the suspend/resume path which aren't obvious from the code, I'm > especially worried about double frees on release.
I find that 29 of 31 cases I found call regulator_disable() only when encounter probe failure or in .remove. So I think the devm versions of regulator_enable/disable() will not cause big problems. I even found a driver to forget to disable regulator when encounter probe failure, which is drivers/iio/adc/ti-adc128s052.c. And a devm version of regulator_enable() can prevent such mistakes.