V4L/DVB: IR/lirc: use memdup_user instead of copy_from_user
authorJarod Wilson <jarod@redhat.com>
Fri, 16 Jul 2010 21:29:54 +0000 (18:29 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 2 Aug 2010 19:42:56 +0000 (16:42 -0300)
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/IR/ir-lirc-codec.c

index afb1ada36c78445217abb017d2943aa85e6a8a4e..ee1f2d443ab2b6950bbafe6eb350366cba1bf3c9 100644 (file)
@@ -74,14 +74,9 @@ static ssize_t ir_lirc_transmit_ir(struct file *file, const char *buf,
        if (count > LIRCBUF_SIZE || count % 2 == 0)
                return -EINVAL;
 
-       txbuf = kzalloc(sizeof(int) * LIRCBUF_SIZE, GFP_KERNEL);
-       if (!txbuf)
-               return -ENOMEM;
-
-       if (copy_from_user(txbuf, buf, n)) {
-               ret = -EFAULT;
-               goto out;
-       }
+       txbuf = memdup_user(buf, n);
+       if (IS_ERR(txbuf))
+               return PTR_ERR(txbuf);
 
        ir_dev = lirc->ir_dev;
        if (!ir_dev) {