Merge branch 'for-linus' of git://neil.brown.name/md
[sfrench/cifs-2.6.git] / drivers / usb / gadget / inode.c
index de8a83803505032542db52582f5258bdcb6473f1..fc35406fc80c3e72562bbb96068f99e462663842 100644 (file)
@@ -1299,11 +1299,9 @@ static long dev_ioctl (struct file *fd, unsigned code, unsigned long value)
        struct usb_gadget       *gadget = dev->gadget;
        long ret = -ENOTTY;
 
-       if (gadget->ops->ioctl) {
-               lock_kernel();
+       if (gadget->ops->ioctl)
                ret = gadget->ops->ioctl (gadget, code, value);
-               unlock_kernel();
-       }
+
        return ret;
 }
 
@@ -1867,13 +1865,9 @@ dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
        buf += 4;
        length -= 4;
 
-       kbuf = kmalloc (length, GFP_KERNEL);
-       if (!kbuf)
-               return -ENOMEM;
-       if (copy_from_user (kbuf, buf, length)) {
-               kfree (kbuf);
-               return -EFAULT;
-       }
+       kbuf = memdup_user(buf, length);
+       if (IS_ERR(kbuf))
+               return PTR_ERR(kbuf);
 
        spin_lock_irq (&dev->lock);
        value = -EINVAL;