aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChao Xie <chao.xie@marvell.com>2013-08-18 21:27:54 -0400
committerSamuel Ortiz <sameo@linux.intel.com>2013-09-02 04:59:57 -0400
commitb432fc25b5b0311a58772fefe8d07e143600e908 (patch)
tree163ed443bf5697d11e78d3218e33e36135b54214
parentf4388ca7f1e7c19a406700b3d1d3bfbf15d14115 (diff)
mfd: 88pm800: Fix potential NULL pdata dereference
User pass platform data to device, and platform data may be NULL. Add the check for pdata. Signed-off-by: Chao Xie <chao.xie@marvell.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r--drivers/mfd/88pm800.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c
index cd9e17471232..a65447d65605 100644
--- a/drivers/mfd/88pm800.c
+++ b/drivers/mfd/88pm800.c
@@ -333,9 +333,11 @@ static int device_rtc_init(struct pm80x_chip *chip,
333{ 333{
334 int ret; 334 int ret;
335 335
336 rtc_devs[0].platform_data = pdata->rtc; 336 if (pdata) {
337 rtc_devs[0].pdata_size = 337 rtc_devs[0].platform_data = pdata->rtc;
338 pdata->rtc ? sizeof(struct pm80x_rtc_pdata) : 0; 338 rtc_devs[0].pdata_size =
339 pdata->rtc ? sizeof(struct pm80x_rtc_pdata) : 0;
340 }
339 ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0], 341 ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
340 ARRAY_SIZE(rtc_devs), NULL, 0, NULL); 342 ARRAY_SIZE(rtc_devs), NULL, 0, NULL);
341 if (ret) { 343 if (ret) {
@@ -578,7 +580,7 @@ static int pm800_probe(struct i2c_client *client,
578 goto err_device_init; 580 goto err_device_init;
579 } 581 }
580 582
581 if (pdata->plat_config) 583 if (pdata && pdata->plat_config)
582 pdata->plat_config(chip, pdata); 584 pdata->plat_config(chip, pdata);
583 585
584 return 0; 586 return 0;