2024-03-01 14:08:18

by Markus Elfring

[permalink] [raw]
Subject: [PATCH] media: v4l2-fwnode: Improve exception handling in v4l2_fwnode_connector_add_link()

From: Markus Elfring <[email protected]>
Date: Fri, 1 Mar 2024 15:02:09 +0100

The kfree() function was called in one case by
the v4l2_fwnode_connector_add_link() function during error handling
even if the passed variable contained a null pointer.
Thus use another label.

Signed-off-by: Markus Elfring <[email protected]>
---
drivers/media/v4l2-core/v4l2-fwnode.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c
index 89c7192148df..dc6daf3a9a51 100644
--- a/drivers/media/v4l2-core/v4l2-fwnode.c
+++ b/drivers/media/v4l2-core/v4l2-fwnode.c
@@ -744,7 +744,7 @@ int v4l2_fwnode_connector_add_link(struct fwnode_handle *fwnode,
link = kzalloc(sizeof(*link), GFP_KERNEL);
if (!link) {
err = -ENOMEM;
- goto err;
+ goto put_fwnode_ep;
}

err = v4l2_fwnode_parse_link(connector_ep, &link->fwnode_link);
@@ -760,6 +760,7 @@ int v4l2_fwnode_connector_add_link(struct fwnode_handle *fwnode,

err:
kfree(link);
+put_fwnode_ep:
fwnode_handle_put(connector_ep);

return err;
--
2.44.0



2024-03-04 12:11:40

by Sakari Ailus

[permalink] [raw]
Subject: Re: [PATCH] media: v4l2-fwnode: Improve exception handling in v4l2_fwnode_connector_add_link()

Hi Markus,

On Fri, Mar 01, 2024 at 03:07:50PM +0100, Markus Elfring wrote:
> From: Markus Elfring <[email protected]>
> Date: Fri, 1 Mar 2024 15:02:09 +0100
>
> The kfree() function was called in one case by
> the v4l2_fwnode_connector_add_link() function during error handling
> even if the passed variable contained a null pointer.
> Thus use another label.

This isn't a problem, the code is fine as-is.

>
> Signed-off-by: Markus Elfring <[email protected]>
> ---
> drivers/media/v4l2-core/v4l2-fwnode.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c
> index 89c7192148df..dc6daf3a9a51 100644
> --- a/drivers/media/v4l2-core/v4l2-fwnode.c
> +++ b/drivers/media/v4l2-core/v4l2-fwnode.c
> @@ -744,7 +744,7 @@ int v4l2_fwnode_connector_add_link(struct fwnode_handle *fwnode,
> link = kzalloc(sizeof(*link), GFP_KERNEL);
> if (!link) {
> err = -ENOMEM;
> - goto err;
> + goto put_fwnode_ep;
> }
>
> err = v4l2_fwnode_parse_link(connector_ep, &link->fwnode_link);
> @@ -760,6 +760,7 @@ int v4l2_fwnode_connector_add_link(struct fwnode_handle *fwnode,
>
> err:
> kfree(link);
> +put_fwnode_ep:
> fwnode_handle_put(connector_ep);
>
> return err;
> --
> 2.44.0
>

--
Sakari Ailus