mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 07:31:29 +00:00
ae11f04b45
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:
|
||
---|---|---|
.. | ||
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 |