linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/4] fbdev: imxfb: Removed unneeded release_mem_region
@ 2023-07-10 13:19 Yangtao Li
  2023-07-10 13:19 ` [PATCH v2 2/4] fbdev: imxfb: Convert to devm_kmalloc_array() Yangtao Li
                   ` (3 more replies)
  0 siblings, 4 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, Uwe Kleine-König
  Cc: Yangtao Li, linux-fbdev, linux-arm-kernel, dri-devel,
	linux-kernel

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>
---
 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:
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [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

end of thread, other threads:[~2023-07-11  5:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PATCH v2 4/4] fbdev: imxfb: remove unneeded lable 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).