media: rc: get start time just before calling driver tx
authorSean Young <sean@mess.org>
Mon, 12 Feb 2018 14:00:28 +0000 (09:00 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 14 Feb 2018 19:17:21 +0000 (14:17 -0500)
The current code gets the start time before copying the IR from
userspace (could cause page faults) and encoding IR. This means
that the gap calculation could be off.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/rc/lirc_dev.c

index fd3860d..da3b5c0 100644 (file)
@@ -249,8 +249,6 @@ static ssize_t ir_lirc_transmit_ir(struct file *file, const char __user *buf,
                goto out_unlock;
        }
 
-       start = ktime_get();
-
        if (!dev->tx_ir) {
                ret = -EINVAL;
                goto out_unlock;
@@ -343,6 +341,8 @@ static ssize_t ir_lirc_transmit_ir(struct file *file, const char __user *buf,
                duration += txbuf[i];
        }
 
+       start = ktime_get();
+
        ret = dev->tx_ir(dev, txbuf, count);
        if (ret < 0)
                goto out_kfree;