Browse Source

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)
Alan 9 years ago
parent
commit
a4de018d2b
1 changed files with 3 additions and 0 deletions
  1. 3 0
      drivers/usb/chipidea/debug.c

+ 3 - 0
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)
 	if (sscanf(buf, "%u", &mode) != 1)
 		return -EINVAL;
 		return -EINVAL;
 
 
+	if (mode > 255)
+		return -EBADRQC;
+
 	pm_runtime_get_sync(ci->dev);
 	pm_runtime_get_sync(ci->dev);
 	spin_lock_irqsave(&ci->lock, flags);
 	spin_lock_irqsave(&ci->lock, flags);
 	ret = hw_port_test_set(ci, mode);
 	ret = hw_port_test_set(ci, mode);