2014-06-19 01:52:24

by Michael Welling

[permalink] [raw]
Subject: [PATCH] drivers:video:fbdev atmel_lcdfb.c power GPIO registration bug

A list that was intended for storing power control GPIOs was never
initialized correctly or filled. Without these lines of added code
the kernel hangs when trying to access an uninitialized list when a
power control GPIO is registered with the device tree.

Signed-off-by: Michael Welling <[email protected]>
---
drivers/video/fbdev/atmel_lcdfb.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/video/fbdev/atmel_lcdfb.c b/drivers/video/fbdev/atmel_lcdfb.c
index e683b6e..d36e830 100644
--- a/drivers/video/fbdev/atmel_lcdfb.c
+++ b/drivers/video/fbdev/atmel_lcdfb.c
@@ -1057,6 +1057,7 @@ static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo)
goto put_display_node;
}

+ INIT_LIST_HEAD(&pdata->pwr_gpios);
ret = -ENOMEM;
for (i = 0; i < of_gpio_named_count(display_np, "atmel,power-control-gpio"); i++) {
gpio = of_get_named_gpio_flags(display_np, "atmel,power-control-gpio",
@@ -1082,6 +1083,7 @@ static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo)
dev_err(dev, "set direction output gpio %d failed\n", gpio);
goto put_display_node;
}
+ list_add(&og->list, &pdata->pwr_gpios);
}

if (is_gpio_power)
--
1.7.9.5


2014-06-19 07:04:42

by Nicolas Ferre

[permalink] [raw]
Subject: Re: [PATCH] drivers:video:fbdev atmel_lcdfb.c power GPIO registration bug

On 19/06/2014 03:52, Michael Welling :
> A list that was intended for storing power control GPIOs was never
> initialized correctly or filled. Without these lines of added code
> the kernel hangs when trying to access an uninitialized list when a
> power control GPIO is registered with the device tree.
>
> Signed-off-by: Michael Welling <[email protected]>

Indeed.

Acked-by: Nicolas Ferre <[email protected]>

Thanks, best regards,

> ---
> drivers/video/fbdev/atmel_lcdfb.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/video/fbdev/atmel_lcdfb.c b/drivers/video/fbdev/atmel_lcdfb.c
> index e683b6e..d36e830 100644
> --- a/drivers/video/fbdev/atmel_lcdfb.c
> +++ b/drivers/video/fbdev/atmel_lcdfb.c
> @@ -1057,6 +1057,7 @@ static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo)
> goto put_display_node;
> }
>
> + INIT_LIST_HEAD(&pdata->pwr_gpios);
> ret = -ENOMEM;
> for (i = 0; i < of_gpio_named_count(display_np, "atmel,power-control-gpio"); i++) {
> gpio = of_get_named_gpio_flags(display_np, "atmel,power-control-gpio",
> @@ -1082,6 +1083,7 @@ static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo)
> dev_err(dev, "set direction output gpio %d failed\n", gpio);
> goto put_display_node;
> }
> + list_add(&og->list, &pdata->pwr_gpios);
> }
>
> if (is_gpio_power)
>


--
Nicolas Ferre

2014-06-23 11:46:56

by Tomi Valkeinen

[permalink] [raw]
Subject: Re: [PATCH] drivers:video:fbdev atmel_lcdfb.c power GPIO registration bug

On 19/06/14 04:52, Michael Welling wrote:
> A list that was intended for storing power control GPIOs was never
> initialized correctly or filled. Without these lines of added code
> the kernel hangs when trying to access an uninitialized list when a
> power control GPIO is registered with the device tree.
>
> Signed-off-by: Michael Welling <[email protected]>
> ---
> drivers/video/fbdev/atmel_lcdfb.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/video/fbdev/atmel_lcdfb.c b/drivers/video/fbdev/atmel_lcdfb.c
> index e683b6e..d36e830 100644
> --- a/drivers/video/fbdev/atmel_lcdfb.c
> +++ b/drivers/video/fbdev/atmel_lcdfb.c
> @@ -1057,6 +1057,7 @@ static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo)
> goto put_display_node;
> }
>
> + INIT_LIST_HEAD(&pdata->pwr_gpios);
> ret = -ENOMEM;
> for (i = 0; i < of_gpio_named_count(display_np, "atmel,power-control-gpio"); i++) {
> gpio = of_get_named_gpio_flags(display_np, "atmel,power-control-gpio",
> @@ -1082,6 +1083,7 @@ static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo)
> dev_err(dev, "set direction output gpio %d failed\n", gpio);
> goto put_display_node;
> }
> + list_add(&og->list, &pdata->pwr_gpios);
> }
>
> if (is_gpio_power)
>

Thanks, queued for 3.16-fixes.

Tomi



Attachments:
signature.asc (819.00 B)
OpenPGP digital signature