Patchwork [2/5] usb: typec: Prepare alt mode enter/exit reporting for UCSI alt mode support

login
register
mail settings
Submitter Heikki Krogerus
Date Feb. 1, 2019, 10:47 a.m.
Message ID <20190201104758.1483-3-heikki.krogerus@linux.intel.com>
Download mbox | patch
Permalink /patch/715645/
State New
Headers show

Comments

Heikki Krogerus - Feb. 1, 2019, 10:47 a.m.
Because of UCSI, we have to support alt mode enter/exit
reporting even when there is no alt mode driver bind to the
alt mode device. With UCSI a firmware handles the alternate
modes, and the modes are entered automatically from OS PoW.

Changing typec_altmode_update_active() so that the driver
module ref count is incremented/decremented only if there
really is a driver for the alt mode. That avoids a NULL
pointer dereference from happening when the driver is
missing.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
 drivers/usb/typec/class.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch

diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
index 5db0593ca0bd..41c0d790a50f 100644
--- a/drivers/usb/typec/class.c
+++ b/drivers/usb/typec/class.c
@@ -277,7 +277,7 @@  void typec_altmode_update_active(struct typec_altmode *adev, bool active)
 	if (adev->active == active)
 		return;
 
-	if (!is_typec_port(adev->dev.parent)) {
+	if (!is_typec_port(adev->dev.parent) && adev->dev.driver) {
 		if (!active)
 			module_put(adev->dev.driver->owner);
 		else