diff options
author | Brian Harring <ferringb@gmail.com> | 2010-10-18 19:21:06 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-10-28 18:30:03 -0400 |
commit | a28dbea0ad3bd8144f3348eb5c20fabc2f12b4b5 (patch) | |
tree | d65e247eca308c886f9ebf966ab1353396bb7e61 /drivers/mfd/mfd-core.c | |
parent | 11c39c4bde7acb727f7a7c6a4d7ffeb95b64dbb4 (diff) |
mfd: Add devices platform data when the cell data size is not 0
When the cell data_size is 0, the resulting platform_data pointer will be
set to ZERO_SIZE_PTR. That could be misleading for device drivers running
a NULL check on thei platform_data pointer before dereferencing it.
Signed-off-by: Brian Harring <ferringb@gmail.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd/mfd-core.c')
-rw-r--r-- | drivers/mfd/mfd-core.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c index d1c8605d4ed4..ec99f681e773 100644 --- a/drivers/mfd/mfd-core.c +++ b/drivers/mfd/mfd-core.c | |||
@@ -38,10 +38,12 @@ static int mfd_add_device(struct device *parent, int id, | |||
38 | pdev->dev.parent = parent; | 38 | pdev->dev.parent = parent; |
39 | platform_set_drvdata(pdev, cell->driver_data); | 39 | platform_set_drvdata(pdev, cell->driver_data); |
40 | 40 | ||
41 | ret = platform_device_add_data(pdev, | 41 | if (cell->data_size) { |
42 | cell->platform_data, cell->data_size); | 42 | ret = platform_device_add_data(pdev, |
43 | if (ret) | 43 | cell->platform_data, cell->data_size); |
44 | goto fail_res; | 44 | if (ret) |
45 | goto fail_res; | ||
46 | } | ||
45 | 47 | ||
46 | for (r = 0; r < cell->num_resources; r++) { | 48 | for (r = 0; r < cell->num_resources; r++) { |
47 | res[r].name = cell->resources[r].name; | 49 | res[r].name = cell->resources[r].name; |