diff options
author | Prashanth K <quic_prashk@quicinc.com> | 2023-09-11 14:34:15 +0530 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2023-10-19 23:08:58 +0200 |
commit | 71d323072af76149b49b11078a913cce0d3b9edd (patch) | |
tree | 4b24c2a3f804d33f34989c09e8a827f38570b43b | |
parent | 4d85f1ce6ca46f0af5964802ed5fa374459c6770 (diff) | |
download | linux-stable-71d323072af76149b49b11078a913cce0d3b9edd.tar.gz linux-stable-71d323072af76149b49b11078a913cce0d3b9edd.tar.bz2 linux-stable-71d323072af76149b49b11078a913cce0d3b9edd.zip |
usb: typec: ucsi: Clear EVENT_PENDING bit if ucsi_send_command fails
commit a00e197daec52bcd955e118f5f57d706da5bfe50 upstream.
Currently if ucsi_send_command() fails, then we bail out without
clearing EVENT_PENDING flag. So when the next connector change
event comes, ucsi_connector_change() won't queue the con->work,
because of which none of the new events will be processed.
Fix this by clearing EVENT_PENDING flag if ucsi_send_command()
fails.
Cc: stable@vger.kernel.org # 5.16
Fixes: 512df95b9432 ("usb: typec: ucsi: Better fix for missing unplug events issue")
Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/1694423055-8440-1-git-send-email-quic_prashk@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/usb/typec/ucsi/ucsi.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index 47a2c73df342..dc2dea3768fb 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -785,6 +785,7 @@ static void ucsi_handle_connector_change(struct work_struct *work) if (ret < 0) { dev_err(ucsi->dev, "%s: GET_CONNECTOR_STATUS failed (%d)\n", __func__, ret); + clear_bit(EVENT_PENDING, &con->ucsi->flags); goto out_unlock; } |