On Mon, Nov 14, 2022 at 06:44:48PM +0100, Sven Peter wrote: > typec_unregister_port is only called for some error paths after > typec_register_port was successful. Ensure it's called in all > cases. > > Fixes: 92440202a880 ("usb: typec: tipd: Only update power status on IRQ") > Signed-off-by: Sven Peter <sven@xxxxxxxxxxxxx> Also direct stable material. Reviewed-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > --- > drivers/usb/typec/tipd/core.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c > index 824e573af570..c35501a92b4d 100644 > --- a/drivers/usb/typec/tipd/core.c > +++ b/drivers/usb/typec/tipd/core.c > @@ -839,7 +839,7 @@ static int tps6598x_probe(struct i2c_client *client) > ret = tps6598x_read16(tps, TPS_REG_POWER_STATUS, &tps->pwr_status); > if (ret < 0) { > dev_err(tps->dev, "failed to read power status: %d\n", ret); > - goto err_role_put; > + goto err_unregister_port; > } > ret = tps6598x_connect(tps); > if (ret) > @@ -852,8 +852,7 @@ static int tps6598x_probe(struct i2c_client *client) > dev_name(&client->dev), tps); > if (ret) { > tps6598x_disconnect(tps, 0); > - typec_unregister_port(tps->port); > - goto err_role_put; > + goto err_unregister_port; > } > > i2c_set_clientdata(client, tps); > @@ -861,6 +860,8 @@ static int tps6598x_probe(struct i2c_client *client) > > return 0; > > +err_unregister_port: > + typec_unregister_port(tps->port); > err_role_put: > usb_role_switch_put(tps->role_sw); > err_fwnode_put: thanks, -- heikki