usb: typec: ucsi: yoga-c630: fix error and remove paths

Fix memory leak and call ucsi_destroy() from the driver's remove
function and probe's error path in order to remove debugfs files and
free the memory. Also call yoga_c630_ec_unregister_notify() in the
probe's error path.

Fixes: 2ea6d07efe ("usb: typec: ucsi: add Lenovo Yoga C630 glue driver")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20250621-c630-ucsi-v1-1-a86de5e11361@oss.qualcomm.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Dmitry Baryshkov
2025-06-21 21:12:56 +03:00
committed by Greg Kroah-Hartman
parent 860295a6bb
commit 168c3896f3

View File

@@ -133,17 +133,30 @@ static int yoga_c630_ucsi_probe(struct auxiliary_device *adev,
ret = yoga_c630_ec_register_notify(ec, &uec->nb);
if (ret)
return ret;
goto err_destroy;
return ucsi_register(uec->ucsi);
ret = ucsi_register(uec->ucsi);
if (ret)
goto err_unregister;
return 0;
err_unregister:
yoga_c630_ec_unregister_notify(uec->ec, &uec->nb);
err_destroy:
ucsi_destroy(uec->ucsi);
return ret;
}
static void yoga_c630_ucsi_remove(struct auxiliary_device *adev)
{
struct yoga_c630_ucsi *uec = auxiliary_get_drvdata(adev);
yoga_c630_ec_unregister_notify(uec->ec, &uec->nb);
ucsi_unregister(uec->ucsi);
yoga_c630_ec_unregister_notify(uec->ec, &uec->nb);
ucsi_destroy(uec->ucsi);
}
static const struct auxiliary_device_id yoga_c630_ucsi_id_table[] = {