[media] cec: an inner loop clobbered the outer loop variable
authorHans Verkuil <hansverk@cisco.com>
Fri, 4 Nov 2016 12:52:10 +0000 (10:52 -0200)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 16 Nov 2016 17:44:44 +0000 (15:44 -0200)
An inner for-loop reused the outer loop variable. This was
only noticeable with CEC adapters supporting more than one
logical address.

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

index bcd19d41c1663f5886bd2307f4fd4d7007f291f9..ed76d7050b8abdd57b60dcc6783532b32b374f32 100644 (file)
@@ -1416,6 +1416,7 @@ int __cec_s_log_addrs(struct cec_adapter *adap,
                const u8 feature_sz = ARRAY_SIZE(log_addrs->features[0]);
                u8 *features = log_addrs->features[i];
                bool op_is_dev_features = false;
+               unsigned j;
 
                log_addrs->log_addr[i] = CEC_LOG_ADDR_INVALID;
                if (type_mask & (1 << log_addrs->log_addr_type[i])) {
@@ -1442,19 +1443,19 @@ int __cec_s_log_addrs(struct cec_adapter *adap,
                        dprintk(1, "unknown logical address type\n");
                        return -EINVAL;
                }
-               for (i = 0; i < feature_sz; i++) {
-                       if ((features[i] & 0x80) == 0) {
+               for (j = 0; j < feature_sz; j++) {
+                       if ((features[j] & 0x80) == 0) {
                                if (op_is_dev_features)
                                        break;
                                op_is_dev_features = true;
                        }
                }
-               if (!op_is_dev_features || i == feature_sz) {
+               if (!op_is_dev_features || j == feature_sz) {
                        dprintk(1, "malformed features\n");
                        return -EINVAL;
                }
                /* Zero unused part of the feature array */
-               memset(features + i + 1, 0, feature_sz - i - 1);
+               memset(features + j + 1, 0, feature_sz - j - 1);
        }
 
        if (log_addrs->cec_version >= CEC_OP_CEC_VERSION_2_0) {