Re: [PATCH] drivers: video: mxsfb: clean use of devm_ioremap_resource()

From: Jingoo Han
Date: Thu May 16 2013 - 04:41:38 EST


Tuesday, May 14, 2013 6:25 PM, Laurent Navet wrote:
>
> Check of 'res' and calls to dev_err are already done in devm_ioremap_resource,
> so no need to do them twice.
>
> Signed-off-by: Laurent Navet <laurent.navet@xxxxxxxxx>
> ---
> drivers/video/mxsfb.c | 14 ++++----------
> 1 file changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
> index 21223d4..0f3d0fc 100644
> --- a/drivers/video/mxsfb.c
> +++ b/drivers/video/mxsfb.c
> @@ -884,9 +884,10 @@ static int mxsfb_probe(struct platform_device *pdev)
> pdev->id_entry = of_id->data;
>
> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> - if (!res) {
> - dev_err(&pdev->dev, "Cannot get memory IO resource\n");
> - return -ENODEV;
> + host->base = devm_ioremap_resource(&pdev->dev, res);
> + if (IS_ERR(host->base)) {
> + ret = PTR_ERR(host->base);
> + goto fb_release;

It makes build warning as below:

drivers/video/mxsfb.c:887:13: warning: 'host' is used uninitialized in this function [-Wuninitialized]
drivers/video/mxsfb.c:965:21: warning: 'fb_info' may be used uninitialized in this function [-Wuninitialized]

It breaks the assignment.
host = to_imxfb_host(fb_info);

Also, 'goto fb_release;' is not good.
Please use ' return PTR_ERR(host->base);' as below:
+ host->base = devm_ioremap_resource(&pdev->dev, res);
+ if (IS_ERR(host->base))
+ return PTR_ERR(host->base);


Best regards,
Jingoo Han

> }
>
> fb_info = framebuffer_alloc(sizeof(struct mxsfb_info), &pdev->dev);
> @@ -897,13 +898,6 @@ static int mxsfb_probe(struct platform_device *pdev)
>
> host = to_imxfb_host(fb_info);
>
> - host->base = devm_ioremap_resource(&pdev->dev, res);
> - if (IS_ERR(host->base)) {
> - dev_err(&pdev->dev, "ioremap failed\n");
> - ret = PTR_ERR(host->base);
> - goto fb_release;
> - }
> -
> host->pdev = pdev;
> platform_set_drvdata(pdev, host);
>
> --
> 1.7.10.4
?移&~&+-깁負w왢쎉喝mb욎dz받)끾w*jgП듶j/곴z받듺2듷솳鈺&)傘a뛴G앶hj:+v돣w녪>W슧違iaxPjm -+껠d_