diff options
author | Michael Thalmeier <michael.thalmeier@hale.at> | 2017-05-19 04:32:09 -0400 |
---|---|---|
committer | Peter Chen <peter.chen@nxp.com> | 2017-05-22 20:36:54 -0400 |
commit | cbb22ebcfb9920380ed69854a7095d497798063d (patch) | |
tree | 6576185df1b84ba1c70170967d95ee54a8291a42 /drivers/usb/chipidea/core.c | |
parent | 0340ff83cd4475261e7474033a381bc125b45244 (diff) |
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/core.c')
-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, | |||
843 | { | 843 | { |
844 | struct ci_hdrc *ci = dev_get_drvdata(dev); | 844 | struct ci_hdrc *ci = dev_get_drvdata(dev); |
845 | 845 | ||
846 | return sprintf(buf, "%s\n", ci_role(ci)->name); | 846 | if (ci->role != CI_ROLE_END) |
847 | return sprintf(buf, "%s\n", ci_role(ci)->name); | ||
848 | |||
849 | return 0; | ||
847 | } | 850 | } |
848 | 851 | ||
849 | static ssize_t ci_role_store(struct device *dev, | 852 | static ssize_t ci_role_store(struct device *dev, |