diff options
author | Michael Thalmeier <michael.thalmeier@hale.at> | 2017-05-19 11:32:09 +0300 |
---|---|---|
committer | Peter Chen <peter.chen@nxp.com> | 2017-05-23 03:36:54 +0300 |
commit | cbb22ebcfb9920380ed69854a7095d497798063d (patch) | |
tree | 6576185df1b84ba1c70170967d95ee54a8291a42 /drivers/usb/chipidea | |
parent | 0340ff83cd4475261e7474033a381bc125b45244 (diff) | |
download | linux-cbb22ebcfb9920380ed69854a7095d497798063d.tar.xz |
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>
Diffstat (limited to 'drivers/usb/chipidea')
-rw-r--r-- | drivers/usb/chipidea/core.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index 9e217b1361ea..fe4fe2440729 100644 --- a/drivers/usb/chipidea/core.c +++ b/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, |