Messages in this thread | | | Date | Fri, 25 Nov 2016 15:46:21 +0530 | From | Viresh Kumar <> | Subject | Re: [PATCH V4] mfd: wm8994-core: Don't use managed regulator bulk get API |
| |
On 25-11-16, 10:14, Lee Jones wrote: > On Thu, 27 Oct 2016, Viresh Kumar wrote: > > > The kernel WARNs and then crashes today if wm8994_device_init() fails > > after calling devm_regulator_bulk_get(). > > > > That happens because there are multiple devices involved here and the > > order in which managed resources are freed isn't correct. > > > > The regulators are added as children of wm8994->dev. Whereas, > > devm_regulator_bulk_get() receives wm8994->dev as the device, though it > > gets the same regulators which were added as children of wm8994->dev > > earlier. > > > > During failures, the children are removed first and the core eventually > > calls regulator_unregister() for them. As regulator_put() was never done > > for them (opposite of devm_regulator_bulk_get()), the kernel WARNs at > > > > WARN_ON(rdev->open_count); > > > > And eventually it crashes from debugfs_remove_recursive(). > > Is ... > > mfd: wm8994-core: disable regulators before removing them > > ... required as well, or is that separate?
It would be better if we get that too. Anyway, the $subject patch has a dependency on it..
-- viresh
| |