2019-06-20 09:18:32

by Joel Stanley

[permalink] [raw]
Subject: [PATCH] soc: aspeed: lpc-ctrl: Fix probe error handling

gcc warns that a mising "flash" phandle node leads to undefined
behavior later:

drivers/soc/aspeed/aspeed-lpc-ctrl.c: In function 'aspeed_lpc_ctrl_probe':
drivers/soc/aspeed/aspeed-lpc-ctrl.c:201:18: error: '*((void *)&resm+8)' may be used uninitialized in this function [-Werror=maybe-uninitialized]

Only set the flash base and size if we find a phandle in the device
tree.

Reported-by: Arnd Bergmann <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
---
drivers/soc/aspeed/aspeed-lpc-ctrl.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/soc/aspeed/aspeed-lpc-ctrl.c b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
index aca13779764a..eee26c2d8b52 100644
--- a/drivers/soc/aspeed/aspeed-lpc-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
@@ -223,10 +223,11 @@ static int aspeed_lpc_ctrl_probe(struct platform_device *pdev)
dev_err(dev, "Couldn't address to resource for flash\n");
return rc;
}
+
+ lpc_ctrl->pnor_size = resource_size(&resm);
+ lpc_ctrl->pnor_base = resm.start;
}

- lpc_ctrl->pnor_size = resource_size(&resm);
- lpc_ctrl->pnor_base = resm.start;

dev_set_drvdata(&pdev->dev, lpc_ctrl);

--
2.20.1


2019-06-21 01:57:17

by Andrew Jeffery

[permalink] [raw]
Subject: Re: [PATCH] soc: aspeed: lpc-ctrl: Fix probe error handling



On Thu, 20 Jun 2019, at 18:47, Joel Stanley wrote:
> gcc warns that a mising "flash" phandle node leads to undefined
> behavior later:
>
> drivers/soc/aspeed/aspeed-lpc-ctrl.c: In function
> 'aspeed_lpc_ctrl_probe':
> drivers/soc/aspeed/aspeed-lpc-ctrl.c:201:18: error: '*((void
> *)&resm+8)' may be used uninitialized in this function
> [-Werror=maybe-uninitialized]
>
> Only set the flash base and size if we find a phandle in the device
> tree.

Ugh, yeah. Not sure how I missed that. Thanks for fixing it.

Reviewed-by: Andrew Jeffery <[email protected]>

>
> Reported-by: Arnd Bergmann <[email protected]>
> Signed-off-by: Joel Stanley <[email protected]>
> ---
> drivers/soc/aspeed/aspeed-lpc-ctrl.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/soc/aspeed/aspeed-lpc-ctrl.c
> b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
> index aca13779764a..eee26c2d8b52 100644
> --- a/drivers/soc/aspeed/aspeed-lpc-ctrl.c
> +++ b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
> @@ -223,10 +223,11 @@ static int aspeed_lpc_ctrl_probe(struct
> platform_device *pdev)
> dev_err(dev, "Couldn't address to resource for flash\n");
> return rc;
> }
> +
> + lpc_ctrl->pnor_size = resource_size(&resm);
> + lpc_ctrl->pnor_base = resm.start;
> }
>
> - lpc_ctrl->pnor_size = resource_size(&resm);
> - lpc_ctrl->pnor_base = resm.start;
>
> dev_set_drvdata(&pdev->dev, lpc_ctrl);
>
> --
> 2.20.1
>
>

2019-06-21 16:57:33

by Vijay Khemka

[permalink] [raw]
Subject: Re: [PATCH] soc: aspeed: lpc-ctrl: Fix probe error handling



On 6/20/19, 2:17 AM, "[email protected] on behalf of Joel Stanley" <[email protected] on behalf of [email protected]> wrote:

gcc warns that a mising "flash" phandle node leads to undefined
behavior later:

drivers/soc/aspeed/aspeed-lpc-ctrl.c: In function 'aspeed_lpc_ctrl_probe':
drivers/soc/aspeed/aspeed-lpc-ctrl.c:201:18: error: '*((void *)&resm+8)' may be used uninitialized in this function [-Werror=maybe-uninitialized]

Only set the flash base and size if we find a phandle in the device
tree.

Thanks for fixing this.
Reviewed-by: Vijay Khemka <[email protected]>

Reported-by: Arnd Bergmann <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
---
drivers/soc/aspeed/aspeed-lpc-ctrl.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/soc/aspeed/aspeed-lpc-ctrl.c b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
index aca13779764a..eee26c2d8b52 100644
--- a/drivers/soc/aspeed/aspeed-lpc-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
@@ -223,10 +223,11 @@ static int aspeed_lpc_ctrl_probe(struct platform_device *pdev)
dev_err(dev, "Couldn't address to resource for flash\n");
return rc;
}
+
+ lpc_ctrl->pnor_size = resource_size(&resm);
+ lpc_ctrl->pnor_base = resm.start;
}

- lpc_ctrl->pnor_size = resource_size(&resm);
- lpc_ctrl->pnor_base = resm.start;

dev_set_drvdata(&pdev->dev, lpc_ctrl);

--
2.20.1