Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Commit 6854cfa

Browse files
lumagTreehugger Robot
authored andcommitted
UPSTREAM: usb: typec: tcpm: fix the PD disabled case
If the PD is disabled for the port, port->pds will be left as NULL, which causes the following crash during caps intilisation. Fix the crash. Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 Call trace: tcpm_register_port+0xaec/0xc44 qcom_pmic_typec_probe+0x1a4/0x254 platform_probe+0x68/0xc0 really_probe+0x148/0x2ac __driver_probe_device+0x78/0x12c driver_probe_device+0xd8/0x160 Bluetooth: hci0: QCA Product ID :0x0000000a __device_attach_driver+0xb8/0x138 bus_for_each_drv+0x80/0xdc Bluetooth: hci0: QCA SOC Version :0x40020150 __device_attach+0x9c/0x188 device_initial_probe+0x14/0x20 bus_probe_device+0xac/0xb0 deferred_probe_work_func+0x8c/0xc8 process_one_work+0x1ec/0x51c worker_thread+0x1ec/0x3e4 kthread+0x120/0x124 ret_from_fork+0x10/0x20 Fixes: cd099cd ("usb: typec: tcpm: Support multiple capabilities") Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/20240113-pmi632-typec-v2-5-182d9aa0a5b3@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> BUG: 206108037 (cherry picked from commit f2e5d3d) Change-Id: If3e81f4bc7c22830d8b0e8400b6e2fc8719a7f6b Signed-off-by: Kyle Tso <kyletso@google.com>
1 parent 11996d8 commit 6854cfa

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/usb/typec/tcpm/tcpm.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6832,7 +6832,8 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
68326832
if (err)
68336833
goto out_role_sw_put;
68346834

6835-
port->typec_caps.pd = port->pds[0];
6835+
if (port->pds)
6836+
port->typec_caps.pd = port->pds[0];
68366837

68376838
port->typec_port = typec_register_port(port->dev, &port->typec_caps);
68386839
if (IS_ERR(port->typec_port)) {

0 commit comments

Comments
 (0)