drm/tegra: output: Fix missing i2c_put_adapter() in the error handling 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: 9be7d864cf
("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>
This commit is contained in:
Родитель
5c8dc26e31
Коммит
13c1212799
|
@ -139,8 +139,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;
|
||||
}
|
||||
|
@ -149,7 +151,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;
|
||||
|
@ -162,7 +164,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;
|
||||
|
@ -176,6 +178,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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче