Skip to content

Commit dd4eddc

Browse files
Dan Carpentermchehab
authored andcommitted
media: mtk-mdp: Fix a refcounting bug on error in init
We need to call of_node_put(comp->dev_node); on the error paths in this function. Fixes: c8eb2d7 ("[media] media: Add Mediatek MDP Driver") Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Hans Verkuil <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
1 parent 9bde425 commit dd4eddc

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

drivers/media/platform/mtk-mdp/mtk_mdp_comp.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node,
5757
{
5858
struct device_node *larb_node;
5959
struct platform_device *larb_pdev;
60+
int ret;
6061
int i;
6162

6263
comp->dev_node = of_node_get(node);
@@ -67,8 +68,8 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node,
6768
if (IS_ERR(comp->clk[i])) {
6869
if (PTR_ERR(comp->clk[i]) != -EPROBE_DEFER)
6970
dev_err(dev, "Failed to get clock\n");
70-
71-
return PTR_ERR(comp->clk[i]);
71+
ret = PTR_ERR(comp->clk[i]);
72+
goto put_dev;
7273
}
7374

7475
/* Only RDMA needs two clocks */
@@ -87,20 +88,27 @@ int mtk_mdp_comp_init(struct device *dev, struct device_node *node,
8788
if (!larb_node) {
8889
dev_err(dev,
8990
"Missing mediadek,larb phandle in %pOF node\n", node);
90-
return -EINVAL;
91+
ret = -EINVAL;
92+
goto put_dev;
9193
}
9294

9395
larb_pdev = of_find_device_by_node(larb_node);
9496
if (!larb_pdev) {
9597
dev_warn(dev, "Waiting for larb device %pOF\n", larb_node);
9698
of_node_put(larb_node);
97-
return -EPROBE_DEFER;
99+
ret = -EPROBE_DEFER;
100+
goto put_dev;
98101
}
99102
of_node_put(larb_node);
100103

101104
comp->larb_dev = &larb_pdev->dev;
102105

103106
return 0;
107+
108+
put_dev:
109+
of_node_put(comp->dev_node);
110+
111+
return ret;
104112
}
105113

106114
void mtk_mdp_comp_deinit(struct device *dev, struct mtk_mdp_comp *comp)

0 commit comments

Comments
 (0)