Message ID | 20240320073927.1641788-4-lk@c--e.de |
---|---|
State | New |
Headers | show |
Series | Fix various races in UCSI | expand |
On Wed, Mar 20, 2024 at 08:39:24AM +0100, Christian A. Ehrhardt wrote: > If a command completes the OPM must send an ack. This applies > to unsupported commands, too. > > Send the required ACK for unsupported commands. > > Signed-off-by: Christian A. Ehrhardt <lk@c--e.de> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/usb/typec/ucsi/ucsi.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c > index dceeed207569..63f340dbd867 100644 > --- a/drivers/usb/typec/ucsi/ucsi.c > +++ b/drivers/usb/typec/ucsi/ucsi.c > @@ -151,8 +151,12 @@ static int ucsi_exec_command(struct ucsi *ucsi, u64 cmd) > if (!(cci & UCSI_CCI_COMMAND_COMPLETE)) > return -EIO; > > - if (cci & UCSI_CCI_NOT_SUPPORTED) > + if (cci & UCSI_CCI_NOT_SUPPORTED) { > + if (ucsi_acknowledge_command(ucsi) < 0) > + dev_err(ucsi->dev, > + "ACK of unsupported command failed\n"); > return -EOPNOTSUPP; > + } > > if (cci & UCSI_CCI_ERROR) { > if (cmd == UCSI_GET_ERROR_STATUS) > -- > 2.40.1
diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index dceeed207569..63f340dbd867 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -151,8 +151,12 @@ static int ucsi_exec_command(struct ucsi *ucsi, u64 cmd) if (!(cci & UCSI_CCI_COMMAND_COMPLETE)) return -EIO; - if (cci & UCSI_CCI_NOT_SUPPORTED) + if (cci & UCSI_CCI_NOT_SUPPORTED) { + if (ucsi_acknowledge_command(ucsi) < 0) + dev_err(ucsi->dev, + "ACK of unsupported command failed\n"); return -EOPNOTSUPP; + } if (cci & UCSI_CCI_ERROR) { if (cmd == UCSI_GET_ERROR_STATUS)
If a command completes the OPM must send an ack. This applies to unsupported commands, too. Send the required ACK for unsupported commands. Signed-off-by: Christian A. Ehrhardt <lk@c--e.de> --- drivers/usb/typec/ucsi/ucsi.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)