mirror of
https://github.com/torvalds/linux.git
synced 2026-10-23 15:32:04 +02:00
USB: dwc2: shut down wakeup timer before freeing HCD state
dwc2_wakeup_detected() accesses the DWC2 host state and can rearm the
wakeup timer. dwc2_hcd_free() currently deletes the timer only after
freeing host-owned state, and timer_delete() does not synchronize a
callback or prevent it from being queued again.
Stop and shut down the timer in dwc2_hcd_release(), before the HCD
resources are freed. This covers both the HCD initialization error path
and normal HCD removal.
Fixes: 7359d482eb ("staging: HCD files for the DWC2 driver")
Cc: stable <stable@kernel.org>
Assisted-by: Codex:GPT-5
Signed-off-by: Runyu Xiao <runyu.xiao@seu.edu.cn>
Reviewed-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://patch.msgid.link/20260904065323.4047026-1-runyu.xiao@seu.edu.cn
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3d9bbf0ffe
commit
fd772af951
|
|
@ -5082,14 +5082,13 @@ static void dwc2_hcd_free(struct dwc2_hsotg *hsotg)
|
|||
}
|
||||
|
||||
cancel_work_sync(&hsotg->phy_reset_work);
|
||||
|
||||
timer_delete(&hsotg->wkp_timer);
|
||||
}
|
||||
|
||||
static void dwc2_hcd_release(struct dwc2_hsotg *hsotg)
|
||||
{
|
||||
/* Turn off all host-specific interrupts */
|
||||
dwc2_disable_host_interrupts(hsotg);
|
||||
timer_shutdown_sync(&hsotg->wkp_timer);
|
||||
|
||||
dwc2_hcd_free(hsotg);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user