On Sat, Apr 27, 2024 at 08:28:12PM +0000, Badhri Jagan Sridharan wrote: > 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@xxxxxxxxxxxxxxx > Fixes: c97cd0b4b54e ("usb: typec: tcpm: set initial svdm version based on pd revision") > Signed-off-by: Badhri Jagan Sridharan <badhri@xxxxxxxxxx> > --- > drivers/usb/typec/tcpm/tcpm.c | 30 +++++++++++++++++++++++------- > 1 file changed, 23 insertions(+), 7 deletions(-) Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> -- With best wishes Dmitry