浏览代码

[media] media: am437x: Don't release OF node reference twice

The remote port reference is released both at the end of the OF graph
parsing loop, and in the error code path at the end of the function.
Those two calls will release the same reference, causing the reference
count to go negative.

Fix the problem by removing the second call.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Acked-by: Benoit Parrot <bparrot@ti.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Laurent Pinchart 10 年之前
父节点
当前提交
ee662d44a2
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      drivers/media/platform/am437x/am437x-vpfe.c

+ 3 - 2
drivers/media/platform/am437x/am437x-vpfe.c

@@ -2427,7 +2427,7 @@ static int vpfe_async_complete(struct v4l2_async_notifier *notifier)
 static struct vpfe_config *
 static struct vpfe_config *
 vpfe_get_pdata(struct platform_device *pdev)
 vpfe_get_pdata(struct platform_device *pdev)
 {
 {
-	struct device_node *endpoint = NULL, *rem = NULL;
+	struct device_node *endpoint = NULL;
 	struct v4l2_of_endpoint bus_cfg;
 	struct v4l2_of_endpoint bus_cfg;
 	struct vpfe_subdev_info *sdinfo;
 	struct vpfe_subdev_info *sdinfo;
 	struct vpfe_config *pdata;
 	struct vpfe_config *pdata;
@@ -2445,6 +2445,8 @@ vpfe_get_pdata(struct platform_device *pdev)
 		return NULL;
 		return NULL;
 
 
 	for (i = 0; ; i++) {
 	for (i = 0; ; i++) {
+		struct device_node *rem;
+
 		endpoint = of_graph_get_next_endpoint(pdev->dev.of_node,
 		endpoint = of_graph_get_next_endpoint(pdev->dev.of_node,
 						      endpoint);
 						      endpoint);
 		if (!endpoint)
 		if (!endpoint)
@@ -2515,7 +2517,6 @@ vpfe_get_pdata(struct platform_device *pdev)
 
 
 done:
 done:
 	of_node_put(endpoint);
 	of_node_put(endpoint);
-	of_node_put(rem);
 	return NULL;
 	return NULL;
 }
 }