[PATCH 2/9] regulator: helper routine to extract regulator_init_data
Grant Likely
grant.likely at secretlab.ca
Wed Oct 5 10:48:05 EST 2011
On Wed, Oct 05, 2011 at 12:01:27AM +0100, Russell King - ARM Linux wrote:
> On Tue, Sep 27, 2011 at 01:10:04PM +0100, Mark Brown wrote:
> > On Tue, Sep 27, 2011 at 03:42:45PM +0530, Rajendra Nayak wrote:
> >
> > > + init_data = devm_kzalloc(dev, sizeof(struct regulator_init_data),
> > > + GFP_KERNEL);
> > > + if (!init_data)
> > > + return NULL; /* Out of memory? */
> >
> > This means that the init data will be kept around for the entire
> > lifetime of the device rather than being discarded.
>
> May I remind you that devm_* lifetime expires whenever the associated
> driver is unbound, which can be much shorter than the lifetime of the
> struct device.
>
> It expires when any of the following occurs:
> 1. userspace asks the associated driver to be unbound
> 2. the driver is removed
> 3. any driver probe for this struct device fails
> 4. the struct device is unregistered.
>
> So: don't use devm_* for anything other than stuff inside a driver being
> associated with the struct device itself. Other uses are a bug waiting
> to happen.
Yes, Russell is right. There were a number of places where I
suggested using devm_* in entirely the wrong places. Double check
anyplace where you've added devm_ calls.
g.
More information about the devicetree-discuss
mailing list