media: platform: mtk-mdp3: release node reference before returning
The iterator for_each_child_of_node() increments the refcount of the child node it is processing. Release such a reference when the loop needs to break due to an error during its execution. Issue identified using for_each_child.cocci Coccinelle semantic patch. Signed-off-by: Deepak R Varma <drv@mailo.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
e5f29bb9c4
commit
b8ed1ceb4a
|
@ -1035,6 +1035,7 @@ static int mdp_comp_sub_create(struct mdp_dev *mdp)
|
|||
{
|
||||
struct device *dev = &mdp->pdev->dev;
|
||||
struct device_node *node, *parent;
|
||||
int ret = 0;
|
||||
|
||||
parent = dev->of_node->parent;
|
||||
|
||||
|
@ -1060,16 +1061,22 @@ static int mdp_comp_sub_create(struct mdp_dev *mdp)
|
|||
dev_err(dev,
|
||||
"Fail to get sub comp. id: type %d alias %d\n",
|
||||
type, alias_id);
|
||||
return -EINVAL;
|
||||
ret = -EINVAL;
|
||||
goto err_free_node;
|
||||
}
|
||||
mdp_comp_alias_id[type]++;
|
||||
|
||||
comp = mdp_comp_create(mdp, node, id);
|
||||
if (IS_ERR(comp))
|
||||
return PTR_ERR(comp);
|
||||
if (IS_ERR(comp)) {
|
||||
ret = PTR_ERR(comp);
|
||||
goto err_free_node;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
err_free_node:
|
||||
of_node_put(node);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void mdp_comp_destroy(struct mdp_dev *mdp)
|
||||
|
|
Loading…
Reference in New Issue