usb: typec: qcom-pmic-typec: fix missing fwnode removal in error path

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: 7d9f1b72b296 ("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>

authored by Javier Carrasco and committed by Greg Kroah-Hartman b8423a2f 7f02b8a5

+4 -2
+4 -2
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c
··· 93 93 return -EINVAL; 94 94 95 95 bridge_dev = devm_drm_dp_hpd_bridge_alloc(tcpm->dev, to_of_node(tcpm->tcpc.fwnode)); 96 - if (IS_ERR(bridge_dev)) 97 - return PTR_ERR(bridge_dev); 96 + if (IS_ERR(bridge_dev)) { 97 + ret = PTR_ERR(bridge_dev); 98 + goto fwnode_remove; 99 + } 98 100 99 101 tcpm->tcpm_port = tcpm_register_port(tcpm->dev, &tcpm->tcpc); 100 102 if (IS_ERR(tcpm->tcpm_port)) {