On Tue, Jan 07, 2025 at 09:57:50AM +0800, GONG Ruiqi wrote: > The error handling for the case `con_index == 0` should involve dropping > the pm usage counter, as ucsi_ccg_sync_control() gets it at the > beginning. Fix it. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: e56aac6e5a25 ("usb: typec: fix potential array underflow in ucsi_ccg_sync_control()") > Signed-off-by: GONG Ruiqi <gongruiqi1@xxxxxxxxxx> > Reviewed-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> Reviewed-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > --- > > v2: complement `Cc: stable` as requested > v1: https://lore.kernel.org/all/20241230093523.1237231-1-gongruiqi1@xxxxxxxxxx/ > > drivers/usb/typec/ucsi/ucsi_ccg.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/typec/ucsi/ucsi_ccg.c b/drivers/usb/typec/ucsi/ucsi_ccg.c > index fcb8e61136cf..740171f24ef9 100644 > --- a/drivers/usb/typec/ucsi/ucsi_ccg.c > +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c > @@ -646,7 +646,7 @@ static int ucsi_ccg_sync_control(struct ucsi *ucsi, u64 command) > UCSI_CMD_CONNECTOR_MASK; > if (con_index == 0) { > ret = -EINVAL; > - goto unlock; > + goto err_put; > } > con = &uc->ucsi->connector[con_index - 1]; > ucsi_ccg_update_set_new_cam_cmd(uc, con, &command); > @@ -654,8 +654,8 @@ static int ucsi_ccg_sync_control(struct ucsi *ucsi, u64 command) > > ret = ucsi_sync_control_common(ucsi, command); > > +err_put: > pm_runtime_put_sync(uc->dev); > -unlock: > mutex_unlock(&uc->lock); > > return ret; > -- > 2.25.1 -- heikki