From a161bef04286e1344cd469098213a972af8fa7d6 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Fri, 4 Nov 2016 10:52:10 -0200 Subject: [PATCH] [media] cec: an inner loop clobbered the outer loop variable 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 Signed-off-by: Mauro Carvalho Chehab --- drivers/media/cec/cec-adap.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/media/cec/cec-adap.c b/drivers/media/cec/cec-adap.c index bcd19d41c166..ed76d7050b8a 100644 --- a/drivers/media/cec/cec-adap.c +++ b/drivers/media/cec/cec-adap.c @@ -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) { -- GitLab