From: Colin Ian King Date: Wed, 4 Jul 2018 12:34:06 +0000 (+0100) Subject: usb: typec: fix dereference before null check on adev X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=9920184d78edeccd165832d54d6203fae4c860f5;p=linux.git usb: typec: fix dereference before null check on adev Pointer adev is being dereferenced before it is being sanity checked with a null pointer check, hence it is possible for a null pointer dereference to occur. Fix this by dereferencing adev only once it is null checked. Detected by CoverityScan, CID#1471598 ("Dereference before null check") Fixes: 8a37d87d72f0 ("usb: typec: Bus type for alternate modes") Signed-off-by: Colin Ian King Acked-by: Heikki Krogerus Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/typec/bus.c b/drivers/usb/typec/bus.c index 999d7904172ad..95a2b10127db5 100644 --- a/drivers/usb/typec/bus.c +++ b/drivers/usb/typec/bus.c @@ -51,7 +51,7 @@ static int typec_altmode_set_state(struct typec_altmode *adev, int state) int typec_altmode_notify(struct typec_altmode *adev, unsigned long conf, void *data) { - bool is_port = is_typec_port(adev->dev.parent); + bool is_port; struct altmode *altmode; struct altmode *partner; int ret; @@ -64,6 +64,7 @@ int typec_altmode_notify(struct typec_altmode *adev, if (!altmode->partner) return -ENODEV; + is_port = is_typec_port(adev->dev.parent); partner = altmode->partner; ret = typec_altmode_set_mux(is_port ? altmode : partner, (u8)conf);