usb: typec: qcom-pmic-typec: fix missing fwnode removal in error path
BugLink: https://bugs.launchpad.net/bugs/2099996
commit b8423a2f5814dbf055ed7c41f25bfe91c2066cbe upstream.
If drm_dp_hpd_bridge_register() fails, the probe function returns
without removing the fwnode via fwnode_handle_put(), leaking the
resource.
Jump to fwnode_remove if drm_dp_hpd_bridge_register() fails to remove
the fwnode acquired with device_get_named_child_node().
Cc: stable@vger.kernel.org
Fixes: 7d9f1b72b2 ("usb: typec: qcom-pmic-typec: switch to DRM_AUX_HPD_BRIDGE")
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Acked-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20241020-qcom_pmic_typec-fwnode_remove-v2-2-7054f3d2e215@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[koichiroden: adjusted context due to missing commit:
718b36a7b49a ("usb: typec: qcom-pmic-typec: split HPD bridge alloc and registration")]
Signed-off-by: Koichiro Den <koichiro.den@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
committed by
Stefan Bader
parent
a7a6528bc5
commit
be7024034e
@@ -217,8 +217,10 @@ static int qcom_pmic_typec_probe(struct platform_device *pdev)
|
||||
return -EINVAL;
|
||||
|
||||
bridge_dev = drm_dp_hpd_bridge_register(tcpm->dev, to_of_node(tcpm->tcpc.fwnode));
|
||||
if (IS_ERR(bridge_dev))
|
||||
return PTR_ERR(bridge_dev);
|
||||
if (IS_ERR(bridge_dev)) {
|
||||
ret = PTR_ERR(bridge_dev);
|
||||
goto fwnode_remove;
|
||||
}
|
||||
|
||||
tcpm->tcpm_port = tcpm_register_port(tcpm->dev, &tcpm->tcpc);
|
||||
if (IS_ERR(tcpm->tcpm_port)) {
|
||||
|
||||
Reference in New Issue
Block a user