OSDN Git Service

usb: chipidea: core: check before accessing ci_role in ci_role_show
authorMichael Thalmeier <michael.thalmeier@hale.at>
Fri, 19 May 2017 08:32:09 +0000 (10:32 +0200)
committerPeter Chen <peter.chen@nxp.com>
Tue, 23 May 2017 00:36:54 +0000 (08:36 +0800)
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>
drivers/usb/chipidea/core.c

index 9e217b1..fe4fe24 100644 (file)
@@ -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,