Skip to content

Commit

Permalink
drm/tegra: output: Fix missing i2c_put_adapter() in the error handlin…
Browse files Browse the repository at this point in the history
…g paths of tegra_output_probe()

[ Upstream commit 2db4578ef6ffb2b52115ca0ebf897b60ec559556 ]

If an error occurs after a successful of_get_i2c_adapter_by_node() call, it
should be undone by a corresponding i2c_put_adapter().

Add the missing i2c_put_adapter() call.

Fixes: 9be7d86 ("drm/tegra: Implement panel support")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/b38604178991e1f08b2cda219103be266be2d680.1693667005.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
tititiou36 authored and Sasha Levin committed Mar 26, 2024
1 parent 2388c36 commit 708543a
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions drivers/gpu/drm/tegra/output.c
Expand Up @@ -142,8 +142,10 @@ int tegra_output_probe(struct tegra_output *output)
GPIOD_IN,
"HDMI hotplug detect");
if (IS_ERR(output->hpd_gpio)) {
if (PTR_ERR(output->hpd_gpio) != -ENOENT)
return PTR_ERR(output->hpd_gpio);
if (PTR_ERR(output->hpd_gpio) != -ENOENT) {
err = PTR_ERR(output->hpd_gpio);
goto put_i2c;
}

output->hpd_gpio = NULL;
}
Expand All @@ -152,7 +154,7 @@ int tegra_output_probe(struct tegra_output *output)
err = gpiod_to_irq(output->hpd_gpio);
if (err < 0) {
dev_err(output->dev, "gpiod_to_irq(): %d\n", err);
return err;
goto put_i2c;
}

output->hpd_irq = err;
Expand All @@ -165,7 +167,7 @@ int tegra_output_probe(struct tegra_output *output)
if (err < 0) {
dev_err(output->dev, "failed to request IRQ#%u: %d\n",
output->hpd_irq, err);
return err;
goto put_i2c;
}

output->connector.polled = DRM_CONNECTOR_POLL_HPD;
Expand All @@ -179,6 +181,12 @@ int tegra_output_probe(struct tegra_output *output)
}

return 0;

put_i2c:
if (output->ddc)
i2c_put_adapter(output->ddc);

return err;
}

void tegra_output_remove(struct tegra_output *output)
Expand Down

0 comments on commit 708543a

Please sign in to comment.