1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

drm/tegra: output: Don't leak OF node on error

The OF node should be put before returning error in tegra_output_probe(),
otherwise node's refcount will be leaked.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
Dmitry Osipenko 2020-08-14 01:06:53 +03:00 committed by Thierry Reding
parent 2340dc15f0
commit 3d2e7aec70

View file

@ -102,10 +102,10 @@ int tegra_output_probe(struct tegra_output *output)
panel = of_parse_phandle(output->of_node, "nvidia,panel", 0); panel = of_parse_phandle(output->of_node, "nvidia,panel", 0);
if (panel) { if (panel) {
output->panel = of_drm_find_panel(panel); output->panel = of_drm_find_panel(panel);
of_node_put(panel);
if (IS_ERR(output->panel)) if (IS_ERR(output->panel))
return PTR_ERR(output->panel); return PTR_ERR(output->panel);
of_node_put(panel);
} }
output->edid = of_get_property(output->of_node, "nvidia,edid", &size); output->edid = of_get_property(output->of_node, "nvidia,edid", &size);
@ -113,13 +113,13 @@ int tegra_output_probe(struct tegra_output *output)
ddc = of_parse_phandle(output->of_node, "nvidia,ddc-i2c-bus", 0); ddc = of_parse_phandle(output->of_node, "nvidia,ddc-i2c-bus", 0);
if (ddc) { if (ddc) {
output->ddc = of_get_i2c_adapter_by_node(ddc); output->ddc = of_get_i2c_adapter_by_node(ddc);
of_node_put(ddc);
if (!output->ddc) { if (!output->ddc) {
err = -EPROBE_DEFER; err = -EPROBE_DEFER;
of_node_put(ddc); of_node_put(ddc);
return err; return err;
} }
of_node_put(ddc);
} }
output->hpd_gpio = devm_gpiod_get_from_of_node(output->dev, output->hpd_gpio = devm_gpiod_get_from_of_node(output->dev,