* [PATCH v2 2/4] fbdev: imxfb: Convert to devm_kmalloc_array()
2023-07-10 13:19 [PATCH v2 1/4] fbdev: imxfb: Removed unneeded release_mem_region Yangtao Li
@ 2023-07-10 13:19 ` Yangtao Li
2023-07-10 13:20 ` [PATCH v2 3/4] fbdev: imxfb: Convert to devm_platform_ioremap_resource() Yangtao Li
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Yangtao Li @ 2023-07-10 13:19 UTC (permalink / raw)
To: Sascha Hauer, Pengutronix Kernel Team, Helge Deller, Shawn Guo,
Fabio Estevam, NXP Linux Team
Cc: Yangtao Li, linux-fbdev, linux-arm-kernel, dri-devel,
linux-kernel
No need for manual kfree in the error path and the remove function.
Signed-off-by: Yangtao Li <frank.li@vivo.com>
---
drivers/video/fbdev/imxfb.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 385c4715c7b7..7020b5f6434d 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -673,7 +673,8 @@ static int imxfb_init_fbinfo(struct platform_device *pdev)
pr_debug("%s\n",__func__);
- info->pseudo_palette = kmalloc_array(16, sizeof(u32), GFP_KERNEL);
+ info->pseudo_palette = devm_kmalloc_array(&pdev->dev, 16,
+ sizeof(u32), GFP_KERNEL);
if (!info->pseudo_palette)
return -ENOMEM;
@@ -1044,7 +1045,6 @@ static int imxfb_probe(struct platform_device *pdev)
failed_ioremap:
failed_getclock:
failed_of_parse:
- kfree(info->pseudo_palette);
failed_init:
framebuffer_release(info);
return ret;
@@ -1061,7 +1061,6 @@ static void imxfb_remove(struct platform_device *pdev)
fb_dealloc_cmap(&info->cmap);
dma_free_wc(&pdev->dev, fbi->map_size, info->screen_buffer,
fbi->map_dma);
- kfree(info->pseudo_palette);
framebuffer_release(info);
}
--
2.39.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 3/4] fbdev: imxfb: Convert to devm_platform_ioremap_resource()
2023-07-10 13:19 [PATCH v2 1/4] fbdev: imxfb: Removed unneeded release_mem_region Yangtao Li
2023-07-10 13:19 ` [PATCH v2 2/4] fbdev: imxfb: Convert to devm_kmalloc_array() Yangtao Li
@ 2023-07-10 13:20 ` Yangtao Li
2023-07-10 13:20 ` [PATCH v2 4/4] fbdev: imxfb: remove unneeded lable Yangtao Li
2023-07-11 5:29 ` [PATCH v2 1/4] fbdev: imxfb: Removed unneeded release_mem_region Helge Deller
3 siblings, 0 replies; 6+ messages in thread
From: Yangtao Li @ 2023-07-10 13:20 UTC (permalink / raw)
To: Sascha Hauer, Pengutronix Kernel Team, Helge Deller, Shawn Guo,
Fabio Estevam, NXP Linux Team
Cc: Yangtao Li, linux-fbdev, linux-arm-kernel, dri-devel,
linux-kernel
Use devm_platform_ioremap_resource() to simplify code.
Signed-off-by: Yangtao Li <frank.li@vivo.com>
---
drivers/video/fbdev/imxfb.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 7020b5f6434d..4582ea801121 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -869,7 +869,6 @@ static int imxfb_probe(struct platform_device *pdev)
struct imxfb_info *fbi;
struct lcd_device *lcd;
struct fb_info *info;
- struct resource *res;
struct imx_fb_videomode *m;
const struct of_device_id *of_id;
struct device_node *display_np;
@@ -886,10 +885,6 @@ static int imxfb_probe(struct platform_device *pdev)
if (of_id)
pdev->id_entry = of_id->data;
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!res)
- return -ENODEV;
-
info = framebuffer_alloc(sizeof(struct imxfb_info), &pdev->dev);
if (!info)
return -ENOMEM;
@@ -971,7 +966,7 @@ static int imxfb_probe(struct platform_device *pdev)
goto failed_getclock;
}
- fbi->regs = devm_ioremap_resource(&pdev->dev, res);
+ fbi->regs = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(fbi->regs)) {
ret = PTR_ERR(fbi->regs);
goto failed_ioremap;
--
2.39.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 4/4] fbdev: imxfb: remove unneeded lable
2023-07-10 13:19 [PATCH v2 1/4] fbdev: imxfb: Removed unneeded release_mem_region Yangtao Li
2023-07-10 13:19 ` [PATCH v2 2/4] fbdev: imxfb: Convert to devm_kmalloc_array() Yangtao Li
2023-07-10 13:20 ` [PATCH v2 3/4] fbdev: imxfb: Convert to devm_platform_ioremap_resource() Yangtao Li
@ 2023-07-10 13:20 ` Yangtao Li
2023-07-10 19:10 ` Uwe Kleine-König
2023-07-11 5:29 ` [PATCH v2 1/4] fbdev: imxfb: Removed unneeded release_mem_region Helge Deller
3 siblings, 1 reply; 6+ messages in thread
From: Yangtao Li @ 2023-07-10 13:20 UTC (permalink / raw)
To: Sascha Hauer, Pengutronix Kernel Team, Helge Deller, Shawn Guo,
Fabio Estevam, NXP Linux Team
Cc: Yangtao Li, linux-fbdev, linux-arm-kernel, dri-devel,
linux-kernel
These lables are redundant and don't do anything, let's remove it.
Signed-off-by: Yangtao Li <frank.li@vivo.com>
---
drivers/video/fbdev/imxfb.c | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 4582ea801121..77dedd2c05fd 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -903,7 +903,7 @@ static int imxfb_probe(struct platform_device *pdev)
if (!display_np) {
dev_err(&pdev->dev, "No display defined in devicetree\n");
ret = -EINVAL;
- goto failed_of_parse;
+ goto failed_init;
}
/*
@@ -917,13 +917,13 @@ static int imxfb_probe(struct platform_device *pdev)
if (!fbi->mode) {
ret = -ENOMEM;
of_node_put(display_np);
- goto failed_of_parse;
+ goto failed_init;
}
ret = imxfb_of_read_mode(&pdev->dev, display_np, fbi->mode);
of_node_put(display_np);
if (ret)
- goto failed_of_parse;
+ goto failed_init;
/* Calculate maximum bytes used per pixel. In most cases this should
* be the same as m->bpp/8 */
@@ -936,7 +936,7 @@ static int imxfb_probe(struct platform_device *pdev)
fbi->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
if (IS_ERR(fbi->clk_ipg)) {
ret = PTR_ERR(fbi->clk_ipg);
- goto failed_getclock;
+ goto failed_init;
}
/*
@@ -951,25 +951,25 @@ static int imxfb_probe(struct platform_device *pdev)
*/
ret = clk_prepare_enable(fbi->clk_ipg);
if (ret)
- goto failed_getclock;
+ goto failed_init;
clk_disable_unprepare(fbi->clk_ipg);
fbi->clk_ahb = devm_clk_get(&pdev->dev, "ahb");
if (IS_ERR(fbi->clk_ahb)) {
ret = PTR_ERR(fbi->clk_ahb);
- goto failed_getclock;
+ goto failed_init;
}
fbi->clk_per = devm_clk_get(&pdev->dev, "per");
if (IS_ERR(fbi->clk_per)) {
ret = PTR_ERR(fbi->clk_per);
- goto failed_getclock;
+ goto failed_init;
}
fbi->regs = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(fbi->regs)) {
ret = PTR_ERR(fbi->regs);
- goto failed_ioremap;
+ goto failed_init;
}
fbi->map_size = PAGE_ALIGN(info->fix.smem_len);
@@ -978,7 +978,7 @@ static int imxfb_probe(struct platform_device *pdev)
if (!info->screen_buffer) {
dev_err(&pdev->dev, "Failed to allocate video RAM\n");
ret = -ENOMEM;
- goto failed_map;
+ goto failed_init;
}
info->fix.smem_start = fbi->map_dma;
@@ -1030,16 +1030,11 @@ static int imxfb_probe(struct platform_device *pdev)
failed_lcd:
unregister_framebuffer(info);
-
failed_register:
fb_dealloc_cmap(&info->cmap);
failed_cmap:
dma_free_wc(&pdev->dev, fbi->map_size, info->screen_buffer,
fbi->map_dma);
-failed_map:
-failed_ioremap:
-failed_getclock:
-failed_of_parse:
failed_init:
framebuffer_release(info);
return ret;
--
2.39.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v2 4/4] fbdev: imxfb: remove unneeded lable
2023-07-10 13:20 ` [PATCH v2 4/4] fbdev: imxfb: remove unneeded lable Yangtao Li
@ 2023-07-10 19:10 ` Uwe Kleine-König
0 siblings, 0 replies; 6+ messages in thread
From: Uwe Kleine-König @ 2023-07-10 19:10 UTC (permalink / raw)
To: Yangtao Li
Cc: Sascha Hauer, Pengutronix Kernel Team, Helge Deller, Shawn Guo,
Fabio Estevam, NXP Linux Team, linux-kernel, linux-fbdev,
dri-devel, linux-arm-kernel
[-- Attachment #1: Type: text/plain, Size: 973 bytes --]
On Mon, Jul 10, 2023 at 09:20:01PM +0800, Yangtao Li wrote:
> These lables are redundant and don't do anything, let's remove it.
s/lable/label/ here an in the subject line.
Are you using this driver, or did you just stumble over it while looking
for some janitorial todo? If the former, I suggest you look into the drm
driver (imx-lcdc) instead.
Having said that, I'm not sure this cleanup is really valuable. While
a single jump target position has several names,
ret = imxfb_of_read_mode(&pdev->dev, display_np, fbi->mode);
of_node_put(display_np);
if (ret)
goto failed_of_parse;
is more obvious correct than
ret = imxfb_of_read_mode(&pdev->dev, display_np, fbi->mode);
of_node_put(display_np);
if (ret)
goto failed_init;
. *shrug*
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/4] fbdev: imxfb: Removed unneeded release_mem_region
2023-07-10 13:19 [PATCH v2 1/4] fbdev: imxfb: Removed unneeded release_mem_region Yangtao Li
` (2 preceding siblings ...)
2023-07-10 13:20 ` [PATCH v2 4/4] fbdev: imxfb: remove unneeded lable Yangtao Li
@ 2023-07-11 5:29 ` Helge Deller
3 siblings, 0 replies; 6+ messages in thread
From: Helge Deller @ 2023-07-11 5:29 UTC (permalink / raw)
To: Yangtao Li, Sascha Hauer, Pengutronix Kernel Team, Shawn Guo,
Fabio Estevam, NXP Linux Team, Uwe Kleine-König
Cc: linux-fbdev, linux-arm-kernel, dri-devel, linux-kernel
On 7/10/23 15:19, Yangtao Li wrote:
> Remove unnecessary release_mem_region from the error path to prevent
> mem region from being released twice, which could avoid resource leak
> or other unexpected issues.
>
> Fixes: b083c22d5114 ("video: fbdev: imxfb: Convert request_mem_region + ioremap to devm_ioremap_resource")
> Signed-off-by: Yangtao Li <frank.li@vivo.com>
I've applied that series (and fixed minor grammar typos in the commit logs).
Thanks!
Helge
> ---
> drivers/video/fbdev/imxfb.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
> index 04f3bf30a529..385c4715c7b7 100644
> --- a/drivers/video/fbdev/imxfb.c
> +++ b/drivers/video/fbdev/imxfb.c
> @@ -1043,7 +1043,6 @@ static int imxfb_probe(struct platform_device *pdev)
> failed_map:
> failed_ioremap:
> failed_getclock:
> - release_mem_region(res->start, resource_size(res));
> failed_of_parse:
> kfree(info->pseudo_palette);
> failed_init:
^ permalink raw reply [flat|nested] 6+ messages in thread