Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/genesis-2.6 into devel-stable
[sfrench/cifs-2.6.git] / drivers / isdn / pcbit / drv.c
index 123c1d6c43b45f82a3713c62e7d8f3357a64e947..1507d2e83fbb0d5acf9486e37d1fdf1583fd1a48 100644 (file)
@@ -411,14 +411,10 @@ static int pcbit_writecmd(const u_char __user *buf, int len, int driver, int cha
                        return -EINVAL;
                }
 
-               cbuf = kmalloc(len, GFP_KERNEL);
-               if (!cbuf)
-                       return -ENOMEM;
+               cbuf = memdup_user(buf, len);
+               if (IS_ERR(cbuf))
+                       return PTR_ERR(cbuf);
 
-               if (copy_from_user(cbuf, buf, len)) {
-                       kfree(cbuf);
-                       return -EFAULT;
-               }
                memcpy_toio(dev->sh_mem, cbuf, len);
                kfree(cbuf);
                return len;