diff options
author | Vladimir Zapolskiy <vz@mleia.com> | 2016-03-22 18:51:54 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2016-04-18 05:18:37 -0400 |
commit | 4dacad61514494f2eba9e60d5b4aa71971dac6a1 (patch) | |
tree | d8abfaadaf33b38aea8ad57a13a52443cba91c83 | |
parent | f36fdacc5fcdca7b0c0d89f031fcdc89717e0be3 (diff) |
omapfb: panel-sharp-ls037v7dw01: fix check of gpio_to_desc() return value
The change fixes a check of gpio_to_desc() return value, the function
returns either a valid pointer to struct gpio_desc or NULL, this makes
IS_ERR() check invalid and may lead to a NULL pointer dereference in
runtime.
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r-- | drivers/video/fbdev/omap2/omapfb/displays/panel-sharp-ls037v7dw01.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/video/fbdev/omap2/omapfb/displays/panel-sharp-ls037v7dw01.c b/drivers/video/fbdev/omap2/omapfb/displays/panel-sharp-ls037v7dw01.c index abfd1f6e3327..1954ec913ce5 100644 --- a/drivers/video/fbdev/omap2/omapfb/displays/panel-sharp-ls037v7dw01.c +++ b/drivers/video/fbdev/omap2/omapfb/displays/panel-sharp-ls037v7dw01.c | |||
@@ -200,20 +200,16 @@ static struct omap_dss_driver sharp_ls_ops = { | |||
200 | static int sharp_ls_get_gpio(struct device *dev, int gpio, unsigned long flags, | 200 | static int sharp_ls_get_gpio(struct device *dev, int gpio, unsigned long flags, |
201 | char *desc, struct gpio_desc **gpiod) | 201 | char *desc, struct gpio_desc **gpiod) |
202 | { | 202 | { |
203 | struct gpio_desc *gd; | ||
204 | int r; | 203 | int r; |
205 | 204 | ||
206 | *gpiod = NULL; | ||
207 | |||
208 | r = devm_gpio_request_one(dev, gpio, flags, desc); | 205 | r = devm_gpio_request_one(dev, gpio, flags, desc); |
209 | if (r) | 206 | if (r) { |
207 | *gpiod = NULL; | ||
210 | return r == -ENOENT ? 0 : r; | 208 | return r == -ENOENT ? 0 : r; |
209 | } | ||
211 | 210 | ||
212 | gd = gpio_to_desc(gpio); | 211 | *gpiod = gpio_to_desc(gpio); |
213 | if (IS_ERR(gd)) | ||
214 | return PTR_ERR(gd) == -ENOENT ? 0 : PTR_ERR(gd); | ||
215 | 212 | ||
216 | *gpiod = gd; | ||
217 | return 0; | 213 | return 0; |
218 | } | 214 | } |
219 | 215 | ||