Re: [PATCH 07/19] timberdale: mfd_cell is now implicitly available to drivers
From: Samuel Ortiz <hidden>
Date: 2011-04-01 23:52:51
Also in:
linux-i2c, linux-media, linux-spi, lkml
On Fri, Apr 01, 2011 at 11:56:35AM -0600, Grant Likely wrote:
On Fri, Apr 1, 2011 at 11:47 AM, Andres Salomon [off-list ref] wrote:quoted
On Fri, 1 Apr 2011 13:20:31 +0200 Samuel Ortiz [off-list ref] wrote:quoted
Hi Grant, On Thu, Mar 31, 2011 at 05:05:22PM -0600, Grant Likely wrote:[...]quoted
quoted
Gah. Not all devices instantiated via mfd will be an mfd device, which means that the driver may very well expect an *entirely different* platform_device pointer; which further means a very high potential of incorrectly dereferenced structures (as evidenced by a patch series that is not bisectable). For instance, the xilinx ip cores are used by more than just mfd.I agree. Since the vast majority of the MFD subdevices are MFD specific IPs, I overlooked that part. The impacted drivers are the timberdale and the DaVinci voice codec ones.Another option is you could do this for MFD devices: struct mfd_device { struct platform_devce pdev; struct mfd_cell *cell; }; However, that requires that drivers using the mfd_cell will *never* get instantiated outside of the mfd infrastructure, and there is no way to protect against this so it is probably a bad idea. Or, mfd_cell could be added to platform_device directly which would *by far* be the safest option at the cost of every platform_device having a mostly unused mfd_cell pointer. Not a significant cost in my opinion.
I thought about this one, but I had the impression people would want to kill me for adding an MFD specific pointer to platform_device. I guess it's worth giving it a try since it would be a simple and safe solution. I'll look at it later this weekend. Thanks for the input. Cheers, Samuel. -- Intel Open Source Technology Centre http://oss.intel.com/