Re: [PATCH] usb: typec: qcom-pmic-typec: disable cc_debounce_dwork on stop
Konrad Dybcio <[email protected]>
| Newsgroups | org.kernel.vger.linux-usb,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
On 8/19/26 6:19 PM, Fan Wu wrote: > cc_debounce_dwork lives on the system workqueue but is armed from > tcpm callbacks (set_cc/start_toggling). Those callbacks run on tcpm's > kthread worker which is only destroyed by tcpm_unregister_port(), after > port_stop() has already returned, opening a potential race window where > tcpm's worker flush re-arms the work. [...] > --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c > +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c > @@ -694,6 +694,8 @@ static void qcom_pmic_typec_port_stop(struct pmic_typec *tcpm) > > for (i = 0; i < pmic_typec_port->nr_irqs; i++) > disable_irq(pmic_typec_port->irq_data[i].irq); > + > + disable_delayed_work_sync(&pmic_typec_port->cc_debounce_dwork); Doesn't this make disable_irq() get called undesirably? Konrad