]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
usb: typec: Fix error pointer dereference
authorEthan Tidmore <ethantidmore06@gmail.com>
Wed, 18 Feb 2026 21:46:21 +0000 (15:46 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 11 Mar 2026 14:38:40 +0000 (15:38 +0100)
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>
drivers/usb/typec/tipd/core.c

index e2b26af2b84a8db2a146113de12c17298df2e29b..43faec794b95a0fb3660a275ce17038afec79ea9 100644 (file)
@@ -820,8 +820,10 @@ static void cd321x_update_work(struct work_struct *work)
                        desc.identity = &st.partner_identity;
 
                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 (IS_ERR(tps->partner)) {
+                       dev_warn(tps->dev, "%s: failed to register partner\n", __func__);
+                       return;
+               }
 
                if (desc.identity) {
                        typec_partner_set_identity(tps->partner);