patch "usb: typec: ucsi: Don't attempt to resume the ports before they exist" added to usb-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
usb: typec: ucsi: Don't attempt to resume the ports before they exist
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From f82060da749c611ed427523b6d1605d87338aac1 Mon Sep 17 00:00:00 2001
From: Heikki Krogerus <[email protected]>
Date: Tue, 31 Jan 2023 16:15:18 +0200
Subject: usb: typec: ucsi: Don't attempt to resume the ports before they exist
This will fix null pointer dereference that was caused by the driver attempting to resume ports that were not yet registered.
--- drivers/usb/typec/ucsi/ucsi.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/usb/typec/ucsi/ucsi.c +8 -1
@@ -1269,6 +1269,9 @@ static int ucsi_init(struct ucsi *ucsi) con->port =NULL ; } +kfree (ucsi->connector); + ucsi->connector =NULL ; + err_reset:memset (&ucsi->cap,0 ,sizeof (ucsi->cap));ucsi_reset_ppm (ucsi);
@@ -1300,7 +1303,8 @@ static void ucsi_resume_work(struct work_struct *work)int ucsi_resume (struct ucsi *ucsi) { -queue_work (system_long_wq, &ucsi->resume_work); +if (ucsi->connector) +queue_work (system_long_wq, &ucsi->resume_work);return 0 ; }EXPORT_SYMBOL_GPL (ucsi_resume);
@@ -1420,6 +1424,9 @@ void ucsi_unregister(struct ucsi *ucsi)/* Disable notifications */ ucsi->ops->async_write (ucsi,UCSI_CONTROL , &cmd,sizeof (cmd)); +if (!ucsi->connector) +return ; +for (i =0 ; i < ucsi->cap.num_connectors; i++) {cancel_work_sync (&ucsi->connector[i].work);ucsi_unregister_partner (&ucsi->connector[i]);
Signature · 1 line
2.39.1