diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2013-11-12 18:09:00 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-12 22:09:15 -0500 |
commit | e19493c1f29a3ac48db8797a79532b62a03442b8 (patch) | |
tree | 4d323aa9c38d34911484864a9cc11be18f340580 | |
parent | 2a0c316bf3ccd910dc58ec62465ff620c664b5e4 (diff) |
drivers/video/backlight/lm3630a_bl.c: potential NULL deref in probe()
We dereference "pdata" later in the function so we can't leave it as NULL.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/video/backlight/lm3630a_bl.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/drivers/video/backlight/lm3630a_bl.c b/drivers/video/backlight/lm3630a_bl.c index 200dca04383f..d719a89a4381 100644 --- a/drivers/video/backlight/lm3630a_bl.c +++ b/drivers/video/backlight/lm3630a_bl.c | |||
@@ -389,22 +389,21 @@ static int lm3630a_probe(struct i2c_client *client, | |||
389 | 389 | ||
390 | i2c_set_clientdata(client, pchip); | 390 | i2c_set_clientdata(client, pchip); |
391 | if (pdata == NULL) { | 391 | if (pdata == NULL) { |
392 | pchip->pdata = devm_kzalloc(pchip->dev, | 392 | pdata = devm_kzalloc(pchip->dev, |
393 | sizeof(struct | 393 | sizeof(struct lm3630a_platform_data), |
394 | lm3630a_platform_data), | 394 | GFP_KERNEL); |
395 | GFP_KERNEL); | 395 | if (pdata == NULL) |
396 | if (pchip->pdata == NULL) | ||
397 | return -ENOMEM; | 396 | return -ENOMEM; |
398 | /* default values */ | 397 | /* default values */ |
399 | pchip->pdata->leda_ctrl = LM3630A_LEDA_ENABLE; | 398 | pdata->leda_ctrl = LM3630A_LEDA_ENABLE; |
400 | pchip->pdata->ledb_ctrl = LM3630A_LEDB_ENABLE; | 399 | pdata->ledb_ctrl = LM3630A_LEDB_ENABLE; |
401 | pchip->pdata->leda_max_brt = LM3630A_MAX_BRIGHTNESS; | 400 | pdata->leda_max_brt = LM3630A_MAX_BRIGHTNESS; |
402 | pchip->pdata->ledb_max_brt = LM3630A_MAX_BRIGHTNESS; | 401 | pdata->ledb_max_brt = LM3630A_MAX_BRIGHTNESS; |
403 | pchip->pdata->leda_init_brt = LM3630A_MAX_BRIGHTNESS; | 402 | pdata->leda_init_brt = LM3630A_MAX_BRIGHTNESS; |
404 | pchip->pdata->ledb_init_brt = LM3630A_MAX_BRIGHTNESS; | 403 | pdata->ledb_init_brt = LM3630A_MAX_BRIGHTNESS; |
405 | } else { | ||
406 | pchip->pdata = pdata; | ||
407 | } | 404 | } |
405 | pchip->pdata = pdata; | ||
406 | |||
408 | /* chip initialize */ | 407 | /* chip initialize */ |
409 | rval = lm3630a_chip_init(pchip); | 408 | rval = lm3630a_chip_init(pchip); |
410 | if (rval < 0) { | 409 | if (rval < 0) { |