mirror of
https://github.com/torvalds/linux.git
synced 2026-09-13 15:40:03 +02:00
usb: typec: qcom-pmic: cancel reset_work on stop
pdphy_stop() disables IRQs but leaves reset_work pending. If the IRQ
handler schedules it just before disable_irq(), the work runs after
remove() frees the struct via devm.
Call cancel_work_sync() after disabling IRQs to close the window.
This issue was found by an in-house static analysis tool.
Fixes: a4422ff221 ("usb: typec: qcom: Add Qualcomm PMIC Type-C driver")
Cc: stable <stable@kernel.org>
Assisted-by: Codex:gpt-5.6
Signed-off-by: Fan Wu <fanwu01@zju.edu.cn>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://patch.msgid.link/20260819161448.76597-1-fanwu01@zju.edu.cn
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2c0f5ca486
commit
7b0df6efd1
|
|
@ -543,6 +543,8 @@ static void qcom_pmic_typec_pdphy_stop(struct pmic_typec *tcpm)
|
|||
for (i = 0; i < pmic_typec_pdphy->nr_irqs; i++)
|
||||
disable_irq(pmic_typec_pdphy->irq_data[i].irq);
|
||||
|
||||
cancel_work_sync(&pmic_typec_pdphy->reset_work);
|
||||
|
||||
qcom_pmic_typec_pdphy_reset_on(pmic_typec_pdphy);
|
||||
|
||||
regulator_disable(pmic_typec_pdphy->vdd_pdphy);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user