mirror of https://github.com/torvalds/linux.git
The deadlock can occur due to a recursive lock acquisition of
`cros_typec_altmode_data::mutex`.
The call chain is as follows:
1. cros_typec_altmode_work() acquires the mutex
2. typec_altmode_vdm() -> dp_altmode_vdm() ->
3. typec_altmode_exit() -> cros_typec_altmode_exit()
4. cros_typec_altmode_exit() attempts to acquire the mutex again
To prevent this, defer the `typec_altmode_exit()` call by scheduling
it rather than calling it directly from within the mutex-protected
context.
Cc: stable <stable@kernel.org>
Fixes:
|
||
|---|---|---|
| .. | ||
| altmodes | ||
| mux | ||
| tcpm | ||
| tipd | ||
| ucsi | ||
| Kconfig | ||
| Makefile | ||
| anx7411.c | ||
| bus.c | ||
| bus.h | ||
| class.c | ||
| class.h | ||
| hd3ss3220.c | ||
| mux.c | ||
| mux.h | ||
| pd.c | ||
| pd.h | ||
| port-mapper.c | ||
| retimer.c | ||
| retimer.h | ||
| rt1719.c | ||
| stusb160x.c | ||
| wusb3801.c | ||