Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

usb: typec: Fix error pointer dereference

The variable tps->partner is checked for an error pointer and then if it
is, it sends an error message but does not return and then immediately
dereferenced a few lines below:

tps->partner = typec_register_partner(tps->port, &desc);
if (IS_ERR(tps->partner))
dev_warn(tps->dev, "%s: failed to register partnet\n", __func__);

if (desc.identity) {
typec_partner_set_identity(tps->partner);
cd321x->cur_partner_identity = st.partner_identity;
}

Add early return and fix spelling mistake in error message.

Detected by Smatch:
drivers/usb/typec/tipd/core.c:827 cd321x_update_work() error:
'tps->partner' dereferencing possible ERR_PTR()

Fixes: 82432bbfb9e83 ("usb: typec: tipd: Handle mode transitions for CD321x")
Signed-off-by: Ethan Tidmore <ethantidmore06@gmail.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://patch.msgid.link/20260218214621.38154-1-ethantidmore06@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Ethan Tidmore and committed by
Greg Kroah-Hartman
f2529d08 0313023f

+4 -2
+4 -2
drivers/usb/typec/tipd/core.c
··· 820 820 desc.identity = &st.partner_identity; 821 821 822 822 tps->partner = typec_register_partner(tps->port, &desc); 823 - if (IS_ERR(tps->partner)) 824 - dev_warn(tps->dev, "%s: failed to register partnet\n", __func__); 823 + if (IS_ERR(tps->partner)) { 824 + dev_warn(tps->dev, "%s: failed to register partner\n", __func__); 825 + return; 826 + } 825 827 826 828 if (desc.identity) { 827 829 typec_partner_set_identity(tps->partner);