| From 658aefaf188000c34a2fa20e7d0f76d81be94d88 Mon Sep 17 00:00:00 2001 |
| From: Heikki Krogerus <heikki.krogerus@linux.intel.com> |
| Date: Wed, 11 Mar 2020 16:00:05 +0300 |
| Subject: [PATCH] usb: typec: ucsi: displayport: Fix NULL pointer dereference |
| |
| commit d16e7b62c5adcd13832c6b0ba364c3468d21b856 upstream. |
| |
| If the registration of the DisplayPort was not successful, |
| or if the port does not support DisplayPort alt mode in the |
| first place, the function ucsi_displayport_remove_partner() |
| will fail with NULL pointer dereference when it attempts to |
| access the driver data. |
| |
| Adding a check to the function to make sure there really is |
| driver data for the device before modifying it. |
| |
| Fixes: af8622f6a585 ("usb: typec: ucsi: Support for DisplayPort alt mode") |
| Reported-by: Andrea Gagliardi La Gala <andrea.lagala@gmail.com> |
| BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206365 |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> |
| Link: https://lore.kernel.org/r/20200311130006.41288-2-heikki.krogerus@linux.intel.com |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/usb/typec/ucsi/displayport.c b/drivers/usb/typec/ucsi/displayport.c |
| index d99700cb4dca..2fee12f748fe 100644 |
| --- a/drivers/usb/typec/ucsi/displayport.c |
| +++ b/drivers/usb/typec/ucsi/displayport.c |
| @@ -273,6 +273,9 @@ void ucsi_displayport_remove_partner(struct typec_altmode *alt) |
| return; |
| |
| dp = typec_altmode_get_drvdata(alt); |
| + if (!dp) |
| + return; |
| + |
| dp->data.conf = 0; |
| dp->data.status = 0; |
| dp->initialized = false; |
| -- |
| 2.7.4 |
| |