In current design, when the tcpm port is unregisterd, the kthread_worker
will be destroyed in the last step. Inside the kthread_destroy_worker(),
the worker will flush all the works and wait for them to end. However, if
one of the works calls hrtimer_start(), this hrtimer will be pending until
timeout even though tcpm port is removed. Once the hrtimer timeout, many
strange kernel dumps appear.
Thus, we can first complete kthread_destroy_worker(), then cancel all the
hrtimers. This will guarantee that no hrtimer is pending at the end.
Fixes:
|
||
|---|---|---|
| .. | ||
| altmodes | ||
| mux | ||
| tcpm | ||
| tipd | ||
| ucsi | ||
| bus.c | ||
| bus.h | ||
| class.c | ||
| class.h | ||
| hd3ss3220.c | ||
| Kconfig | ||
| Makefile | ||
| mux.c | ||
| mux.h | ||
| port-mapper.c | ||
| qcom-pmic-typec.c | ||
| stusb160x.c | ||