[media] lirc: LIRC_{G,S}ET_SEND_MODE fail if device cannot transmit
authorSean Young <sean@mess.org>
Fri, 2 Dec 2016 17:16:09 +0000 (15:16 -0200)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 30 Jan 2017 13:53:02 +0000 (11:53 -0200)
These ioctls should not succeed if the device cannot send. Also make it
clear that these ioctls should return the lirc mode, although the actual
value does not change.

Signed-off-by: Sean Young <sean@mess.org>
Reviewed-by: Andi Shyti <andi.shyti@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/rc/ir-lirc-codec.c

index c327730..9e41305 100644 (file)
@@ -204,11 +204,17 @@ static long ir_lirc_ioctl(struct file *filep, unsigned int cmd,
 
        /* legacy support */
        case LIRC_GET_SEND_MODE:
-               val = LIRC_CAN_SEND_PULSE & LIRC_CAN_SEND_MASK;
+               if (!dev->tx_ir)
+                       return -ENOTTY;
+
+               val = LIRC_MODE_PULSE;
                break;
 
        case LIRC_SET_SEND_MODE:
-               if (val != (LIRC_MODE_PULSE & LIRC_CAN_SEND_MASK))
+               if (!dev->tx_ir)
+                       return -ENOTTY;
+
+               if (val != LIRC_MODE_PULSE)
                        return -EINVAL;
                return 0;