diff options
author | Axel Lin <axel.lin@gmail.com> | 2011-11-27 20:07:57 +0800 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-11-27 19:46:31 +0000 |
commit | 22d881c068403c155fbe320c0a26e3b1bcdaa1b8 (patch) | |
tree | 49f543948e610cb7ad2b49dc55861868383ee4e5 /drivers/regulator/fixed.c | |
parent | bc91396b0b0a0d1300e151264b81f010c72a8bbf (diff) | |
download | lwn-22d881c068403c155fbe320c0a26e3b1bcdaa1b8.tar.gz lwn-22d881c068403c155fbe320c0a26e3b1bcdaa1b8.zip |
regulator: Avoid potential NULL dereference in reg_fixed_voltage_probe()
of_get_fixed_voltage_config() may return NULL, return -ENOMEM in this case
so we don't dereference NULL pointer.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator/fixed.c')
-rw-r--r-- | drivers/regulator/fixed.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c index 703c26b756dc..ebec5e06dfa1 100644 --- a/drivers/regulator/fixed.c +++ b/drivers/regulator/fixed.c @@ -160,12 +160,17 @@ static struct regulator_ops fixed_voltage_ops = { static int __devinit reg_fixed_voltage_probe(struct platform_device *pdev) { - struct fixed_voltage_config *config = pdev->dev.platform_data; + struct fixed_voltage_config *config; struct fixed_voltage_data *drvdata; int ret; if (pdev->dev.of_node) config = of_get_fixed_voltage_config(&pdev->dev); + else + config = pdev->dev.platform_data; + + if (!config) + return -ENOMEM; drvdata = kzalloc(sizeof(struct fixed_voltage_data), GFP_KERNEL); if (drvdata == NULL) { |