drm/tegra: rgb: Fix the unbound reference count
[ Upstream commit 3c3642335065c3bde0742b0edc505b6ea8fdc2b3 ]
The of_get_child_by_name() increments the refcount in tegra_dc_rgb_probe,
but the driver does not decrement the refcount during unbind. Fix the
unbound reference count using devm_add_action_or_reset() helper.
Fixes: d8f4a9eda0
("drm: Add NVIDIA Tegra20 support")
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20250205112137.36055-1-biju.das.jz@bp.renesas.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
01f73e1042
commit
3215e000ef
@@ -190,6 +190,11 @@ static const struct drm_encoder_helper_funcs tegra_rgb_encoder_helper_funcs = {
|
|||||||
.atomic_check = tegra_rgb_encoder_atomic_check,
|
.atomic_check = tegra_rgb_encoder_atomic_check,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void tegra_dc_of_node_put(void *data)
|
||||||
|
{
|
||||||
|
of_node_put(data);
|
||||||
|
}
|
||||||
|
|
||||||
int tegra_dc_rgb_probe(struct tegra_dc *dc)
|
int tegra_dc_rgb_probe(struct tegra_dc *dc)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
@@ -197,7 +202,14 @@ int tegra_dc_rgb_probe(struct tegra_dc *dc)
|
|||||||
int err;
|
int err;
|
||||||
|
|
||||||
np = of_get_child_by_name(dc->dev->of_node, "rgb");
|
np = of_get_child_by_name(dc->dev->of_node, "rgb");
|
||||||
if (!np || !of_device_is_available(np))
|
if (!np)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
err = devm_add_action_or_reset(dc->dev, tegra_dc_of_node_put, np);
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
if (!of_device_is_available(np))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
rgb = devm_kzalloc(dc->dev, sizeof(*rgb), GFP_KERNEL);
|
rgb = devm_kzalloc(dc->dev, sizeof(*rgb), GFP_KERNEL);
|
||||||
|
Reference in New Issue
Block a user