]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
[media] cec: improve cec_transmit_msg_fh logging
authorHans Verkuil <hans.verkuil@cisco.com>
Mon, 27 Feb 2017 13:54:09 +0000 (10:54 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 22 Mar 2017 14:14:45 +0000 (11:14 -0300)
Several error paths didn't log why an error was returned. Add this.

Also handle the corner case of "adapter is unconfigured AND the message
is from Unregistered to TV AND reply is non-zero" separately and return
EINVAL in that case, since it really is an invalid value and not an
unconfigured CEC device.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/cec/cec-adap.c
drivers/media/cec/cec-api.c

index 4f1e571d10b74f2f527654f6c09c9ac26a73e590..9e25ba20f4d1d6c81522c76be93f4d7151354be4 100644 (file)
@@ -646,12 +646,21 @@ int cec_transmit_msg_fh(struct cec_adapter *adap, struct cec_msg *msg,
                        __func__, cec_msg_initiator(msg));
                return -EINVAL;
        }
-       if (!adap->is_configured && !adap->is_configuring &&
-           (msg->msg[0] != 0xf0 || msg->reply))
-               return -ENONET;
+       if (!adap->is_configured && !adap->is_configuring) {
+               if (msg->msg[0] != 0xf0) {
+                       dprintk(1, "%s: adapter is unconfigured\n", __func__);
+                       return -ENONET;
+               }
+               if (msg->reply) {
+                       dprintk(1, "%s: invalid msg->reply\n", __func__);
+                       return -EINVAL;
+               }
+       }
 
-       if (adap->transmit_queue_sz >= CEC_MAX_MSG_TX_QUEUE_SZ)
+       if (adap->transmit_queue_sz >= CEC_MAX_MSG_TX_QUEUE_SZ) {
+               dprintk(1, "%s: transmit queue full\n", __func__);
                return -EBUSY;
+       }
 
        data = kzalloc(sizeof(*data), GFP_KERNEL);
        if (!data)
index cea350ea2a526e180db18f5115e978ba3c0536da..0860fb458757df3871ccab290867fcf7c4d5c11e 100644 (file)
@@ -202,7 +202,7 @@ static long cec_transmit(struct cec_adapter *adap, struct cec_fh *fh,
                err = -EPERM;
        else if (adap->is_configuring)
                err = -ENONET;
-       else if (!adap->is_configured && (msg.msg[0] != 0xf0 || msg.reply))
+       else if (!adap->is_configured && msg.msg[0] != 0xf0)
                err = -ENONET;
        else if (cec_is_busy(adap, fh))
                err = -EBUSY;