media: cec: move check from cec_transmit to cec_transmit_msg_fh
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Tue, 23 Apr 2019 12:43:30 +0000 (08:43 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 23 May 2019 09:31:35 +0000 (05:31 -0400)
This ensures all the cec_msg checks are done in the same place.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/cec/cec-adap.c
drivers/media/cec/cec-api.c

index b610251..5b9232b 100644 (file)
@@ -761,6 +761,11 @@ int cec_transmit_msg_fh(struct cec_adapter *adap, struct cec_msg *msg,
                return -EINVAL;
        }
 
+       /* A CDC-Only device can only send CDC messages */
+       if ((adap->log_addrs.flags & CEC_LOG_ADDRS_FL_CDC_ONLY) &&
+           (msg->len == 1 || msg->msg[1] != CEC_MSG_CDC_MESSAGE))
+               return -EINVAL;
+
        if (msg->len >= 4 && msg->msg[1] == CEC_MSG_CDC_MESSAGE) {
                msg->msg[2] = adap->phys_addr >> 8;
                msg->msg[3] = adap->phys_addr & 0xff;
index 156a0d7..12d6764 100644 (file)
@@ -198,19 +198,11 @@ static long cec_transmit(struct cec_adapter *adap, struct cec_fh *fh,
        if (copy_from_user(&msg, parg, sizeof(msg)))
                return -EFAULT;
 
-       /* A CDC-Only device can only send CDC messages */
-       if ((adap->log_addrs.flags & CEC_LOG_ADDRS_FL_CDC_ONLY) &&
-           (msg.len == 1 || msg.msg[1] != CEC_MSG_CDC_MESSAGE))
-               return -EINVAL;
-
        mutex_lock(&adap->lock);
        if (adap->log_addrs.num_log_addrs == 0)
                err = -EPERM;
        else if (adap->is_configuring)
                err = -ENONET;
-       else if (!adap->is_configured &&
-                (adap->needs_hpd || msg.msg[0] != 0xf0))
-               err = -ENONET;
        else if (cec_is_busy(adap, fh))
                err = -EBUSY;
        else