mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-10-26 19:14:18 +00:00
typec_register_partner() does not guarantee partner registration
to always succeed. In the event of failure, port->partner is set
to the error value or NULL. Given that port->partner validity is
not checked, this results in the following crash:
Unable to handle kernel NULL pointer dereference at virtual address xx
pc : run_state_machine+0x1bc8/0x1c08
lr : run_state_machine+0x1b90/0x1c08
..
Call trace:
run_state_machine+0x1bc8/0x1c08
tcpm_state_machine_work+0x94/0xe4
kthread_worker_fn+0x118/0x328
kthread+0x1d0/0x23c
ret_from_fork+0x10/0x20
To prevent the crash, check for port->partner validity before
derefencing it in all the call sites.
Cc: stable@vger.kernel.org
Fixes:
|
History
|
|
|---|---|---|
| .. | ||
| altmodes | ||
| mux | ||
| tcpm | ||
| tipd | ||
| ucsi | ||
| anx7411.c | ||
| bus.c | ||
| bus.h | ||
| class.c | ||
| class.h | ||
| hd3ss3220.c | ||
| Kconfig | ||
| Makefile | ||
| mux.c | ||
| mux.h | ||
| pd.c | ||
| pd.h | ||
| port-mapper.c | ||
| retimer.c | ||
| retimer.h | ||
| rt1719.c | ||
| stusb160x.c | ||
| wusb3801.c | ||