aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/gadget/inode.c')
-rw-r--r--drivers/usb/gadget/inode.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
index de8a83803505..fc35406fc80c 100644
--- a/drivers/usb/gadget/inode.c
+++ b/drivers/usb/gadget/inode.c
@@ -1299,11 +1299,9 @@ static long dev_ioctl (struct file *fd, unsigned code, unsigned long value)
1299 struct usb_gadget *gadget = dev->gadget; 1299 struct usb_gadget *gadget = dev->gadget;
1300 long ret = -ENOTTY; 1300 long ret = -ENOTTY;
1301 1301
1302 if (gadget->ops->ioctl) { 1302 if (gadget->ops->ioctl)
1303 lock_kernel();
1304 ret = gadget->ops->ioctl (gadget, code, value); 1303 ret = gadget->ops->ioctl (gadget, code, value);
1305 unlock_kernel(); 1304
1306 }
1307 return ret; 1305 return ret;
1308} 1306}
1309 1307
@@ -1867,13 +1865,9 @@ dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
1867 buf += 4; 1865 buf += 4;
1868 length -= 4; 1866 length -= 4;
1869 1867
1870 kbuf = kmalloc (length, GFP_KERNEL); 1868 kbuf = memdup_user(buf, length);
1871 if (!kbuf) 1869 if (IS_ERR(kbuf))
1872 return -ENOMEM; 1870 return PTR_ERR(kbuf);
1873 if (copy_from_user (kbuf, buf, length)) {
1874 kfree (kbuf);
1875 return -EFAULT;
1876 }
1877 1871
1878 spin_lock_irq (&dev->lock); 1872 spin_lock_irq (&dev->lock);
1879 value = -EINVAL; 1873 value = -EINVAL;