Hi Mark On Thu, 3 May 2012, Mark Brown wrote: > On Thu, May 03, 2012 at 05:05:33PM +0200, Guennadi Liakhovetski wrote: > > devres_destroy() doesn't call the release() method, it only destroys the > > resource. The caller should take care to release the associated object > > itself. > > > + regulator_put(regulator); > > rc = devres_destroy(regulator->dev, devm_regulator_release, > > devm_regulator_match, regulator); So, shall we rather use your new devres_release() here? Thanks Guennadi > Oh dear. This seems like pretty peculiar behaviour on the part of > devres_destroy() - everything about the function and its documentation > would suggest that it'd actually free the resource not just free the > devm_ internal bits of the resource, and especially given that we have > to pass the release function in. > > This also seems like it's the wrong way round - it probably shouldn't > matter that much but we should really only do the regulator_put() after > the destroy succeeded since there's a small chance that hotplug or > something might cause this to run while the device is being removed > elsewhere so we could end up trying to double free. > > Also, this patch is totally unrelated to the rest of the series and > should really have been sent separately. --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html