Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a2be474 authored by Biju Das's avatar Biju Das Committed by Greg Kroah-Hartman
Browse files

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: d8f4a9ed ("drm: Add NVIDIA Tegra20 support")
Signed-off-by: default avatarBiju Das <biju.das.jz@bp.renesas.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20250205112137.36055-1-biju.das.jz@bp.renesas.com


Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 833d0ace
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -211,6 +211,11 @@ static const struct drm_encoder_helper_funcs tegra_rgb_encoder_helper_funcs = {
	.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)
{
	struct device_node *np;
@@ -218,7 +223,14 @@ int tegra_dc_rgb_probe(struct tegra_dc *dc)
	int err;

	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;

	rgb = devm_kzalloc(dc->dev, sizeof(*rgb), GFP_KERNEL);