Browse Source

usb: chipidea: core: check before accessing ci_role in ci_role_show

ci_role BUGs when the role is >= CI_ROLE_END.
This is the case while the role is changing.

Signed-off-by: Michael Thalmeier <michael.thalmeier@hale.at>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Michael Thalmeier 8 years ago
parent
commit
cbb22ebcfb
1 changed files with 4 additions and 1 deletions
  1. 4 1
      drivers/usb/chipidea/core.c

+ 4 - 1
drivers/usb/chipidea/core.c

@@ -843,7 +843,10 @@ static ssize_t ci_role_show(struct device *dev, struct device_attribute *attr,
 {
 	struct ci_hdrc *ci = dev_get_drvdata(dev);
 
-	return sprintf(buf, "%s\n", ci_role(ci)->name);
+	if (ci->role != CI_ROLE_END)
+		return sprintf(buf, "%s\n", ci_role(ci)->name);
+
+	return 0;
 }
 
 static ssize_t ci_role_store(struct device *dev,