diff options
author | Axel Lin <axel.lin@gmail.com> | 2011-11-27 07:07:57 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-11-27 14:46:31 -0500 |
commit | 22d881c068403c155fbe320c0a26e3b1bcdaa1b8 (patch) | |
tree | 49f543948e610cb7ad2b49dc55861868383ee4e5 /drivers/regulator | |
parent | bc91396b0b0a0d1300e151264b81f010c72a8bbf (diff) |
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')
-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 703c26b756d..ebec5e06dfa 100644 --- a/drivers/regulator/fixed.c +++ b/drivers/regulator/fixed.c | |||
@@ -160,12 +160,17 @@ static struct regulator_ops fixed_voltage_ops = { | |||
160 | 160 | ||
161 | static int __devinit reg_fixed_voltage_probe(struct platform_device *pdev) | 161 | static int __devinit reg_fixed_voltage_probe(struct platform_device *pdev) |
162 | { | 162 | { |
163 | struct fixed_voltage_config *config = pdev->dev.platform_data; | 163 | struct fixed_voltage_config *config; |
164 | struct fixed_voltage_data *drvdata; | 164 | struct fixed_voltage_data *drvdata; |
165 | int ret; | 165 | int ret; |
166 | 166 | ||
167 | if (pdev->dev.of_node) | 167 | if (pdev->dev.of_node) |
168 | config = of_get_fixed_voltage_config(&pdev->dev); | 168 | config = of_get_fixed_voltage_config(&pdev->dev); |
169 | else | ||
170 | config = pdev->dev.platform_data; | ||
171 | |||
172 | if (!config) | ||
173 | return -ENOMEM; | ||
169 | 174 | ||
170 | drvdata = kzalloc(sizeof(struct fixed_voltage_data), GFP_KERNEL); | 175 | drvdata = kzalloc(sizeof(struct fixed_voltage_data), GFP_KERNEL); |
171 | if (drvdata == NULL) { | 176 | if (drvdata == NULL) { |