summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan <gnomes@lxorguk.ukuu.org.uk>2016-02-15 19:09:46 +0000
committerPeter Chen <peter.chen@nxp.com>2016-02-19 14:12:39 +0800
commita4de018d2b0364e40a626fa521ec21e31a10ac84 (patch)
treee8977ba2b54a4cf8a8f4a87ad479d74e270ae6aa
parent18558cae0272f8fd9647e69d3fec1565a7949865 (diff)
downloadlinux-a4de018d2b0364e40a626fa521ec21e31a10ac84.tar.gz
linux-a4de018d2b0364e40a626fa521ec21e31a10ac84.tar.xz
usb: chipidea: error on overflow for port_test_write
The write value is 8bit, but currently writing a larger number (eg a doubled digit) is not errored but instead gets cast and sets off an action probably undesired. Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Peter Chen <peter.chen@nxp.com> (Change the style of commit log to fix checkpatch.pl warning)
-rw-r--r--drivers/usb/chipidea/debug.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/debug.c b/drivers/usb/chipidea/debug.c
index a4f7db2e18dd..df47110bad2d 100644
--- a/drivers/usb/chipidea/debug.c
+++ b/drivers/usb/chipidea/debug.c
@@ -100,6 +100,9 @@ static ssize_t ci_port_test_write(struct file *file, const char __user *ubuf,
if (sscanf(buf, "%u", &mode) != 1)
return -EINVAL;
+ if (mode > 255)
+ return -EBADRQC;
+
pm_runtime_get_sync(ci->dev);
spin_lock_irqsave(&ci->lock, flags);
ret = hw_port_test_set(ci, mode);