diff mbox series

v4l: xilinx-vipp: Fix refcount leak in xvip_graph_dma_init

Message ID 20220601042514.61780-1-linmq006@gmail.com (mailing list archive)
State New, archived
Headers show
Series v4l: xilinx-vipp: Fix refcount leak in xvip_graph_dma_init | expand

Commit Message

Miaoqian Lin June 1, 2022, 4:25 a.m. UTC
of_get_child_by_name() returns a node pointer with refcount
incremented, we should use of_node_put() on it when not need anymore.
Add missing of_node_put() to avoid refcount leak.

Fixes: df3305156f98 ("[media] v4l: xilinx: Add Xilinx Video IP core")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
---
 drivers/media/platform/xilinx/xilinx-vipp.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Laurent Pinchart June 1, 2022, 7:34 a.m. UTC | #1
Hi Lin,

Thank you for the patch.

On Wed, Jun 01, 2022 at 08:25:14AM +0400, Miaoqian Lin wrote:
> of_get_child_by_name() returns a node pointer with refcount
> incremented, we should use of_node_put() on it when not need anymore.
> Add missing of_node_put() to avoid refcount leak.
> 
> Fixes: df3305156f98 ("[media] v4l: xilinx: Add Xilinx Video IP core")
> Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
> ---
>  drivers/media/platform/xilinx/xilinx-vipp.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/media/platform/xilinx/xilinx-vipp.c b/drivers/media/platform/xilinx/xilinx-vipp.c
> index f34f8b077e03..415579b63737 100644
> --- a/drivers/media/platform/xilinx/xilinx-vipp.c
> +++ b/drivers/media/platform/xilinx/xilinx-vipp.c
> @@ -483,10 +483,12 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev)
>  		ret = xvip_graph_dma_init_one(xdev, port);
>  		if (ret < 0) {
>  			of_node_put(port);
> +			of_node_put(ports);
>  			return ret;
>  		}
>  	}
>  
> +	of_node_put(ports);

We could possibly simplify this a little bit by initializing ret to 0
when declaring it, replacing the "return ret" above by a break, and
returning ret below. This would remove the need for the first
of_node_put(ports) call above.

If you think that's a good idea I can make that change when applying
this patch to my tree, otherwise I'll take it as-is.

In either case,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

>  	return 0;
>  }
>
Miaoqian Lin June 1, 2022, 8:32 a.m. UTC | #2
Hi, Laurent

On 2022/6/1 15:34, Laurent Pinchart wrote:
> Hi Lin,
>
> Thank you for the patch.
>
> On Wed, Jun 01, 2022 at 08:25:14AM +0400, Miaoqian Lin wrote:
>> of_get_child_by_name() returns a node pointer with refcount
>> incremented, we should use of_node_put() on it when not need anymore.
>> Add missing of_node_put() to avoid refcount leak.
>>
>> Fixes: df3305156f98 ("[media] v4l: xilinx: Add Xilinx Video IP core")
>> Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
>> ---
>>  drivers/media/platform/xilinx/xilinx-vipp.c | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/media/platform/xilinx/xilinx-vipp.c b/drivers/media/platform/xilinx/xilinx-vipp.c
>> index f34f8b077e03..415579b63737 100644
>> --- a/drivers/media/platform/xilinx/xilinx-vipp.c
>> +++ b/drivers/media/platform/xilinx/xilinx-vipp.c
>> @@ -483,10 +483,12 @@ static int xvip_graph_dma_init(struct xvip_composite_device *xdev)
>>  		ret = xvip_graph_dma_init_one(xdev, port);
>>  		if (ret < 0) {
>>  			of_node_put(port);
>> +			of_node_put(ports);
>>  			return ret;
>>  		}
>>  	}
>>  
>> +	of_node_put(ports);
> We could possibly simplify this a little bit by initializing ret to 0
> when declaring it, replacing the "return ret" above by a break, and
> returning ret below. This would remove the need for the first
> of_node_put(ports) call above.
>
> If you think that's a good idea I can make that change when applying
> this patch to my tree, otherwise I'll take it as-is.
Thanks for your review, I think your idea is good, we can do that to simplify code.
> In either case,
>
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
>>  	return 0;
>>  }
>>
diff mbox series

Patch

diff --git a/drivers/media/platform/xilinx/xilinx-vipp.c b/drivers/media/platform/xilinx/xilinx-vipp.c
index f34f8b077e03..415579b63737 100644
--- a/drivers/media/platform/xilinx/xilinx-vipp.c
+++ b/drivers/media/platform/xilinx/xilinx-vipp.c
@@ -483,10 +483,12 @@  static int xvip_graph_dma_init(struct xvip_composite_device *xdev)
 		ret = xvip_graph_dma_init_one(xdev, port);
 		if (ret < 0) {
 			of_node_put(port);
+			of_node_put(ports);
 			return ret;
 		}
 	}
 
+	of_node_put(ports);
 	return 0;
 }