BZ: 17272
If OTP data has only 0's checksum will pass, but data is invalid. This
patch makes it fail.
Change-Id: If461bb9b44736bfdcea96318c47bec185955e1db
Orig-Change-Id: I4a5cf7276ad44600fffbfce72e4cd50eb2d7c582
Signed-off-by: David Cohen <david.a.cohen@intel.com>
Reviewed-on: http://android.intel.com:8080/25232
Reviewed-by: Koskinen, Ilkka <ilkka.koskinen@intel.com>
Reviewed-by: Gerasimow, Timo <timo.gerasimow@intel.com>
Reviewed-by: Koski, Anttu <anttu.koski@intel.com>
Tested-by: Koski, Anttu <anttu.koski@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Reviewed-on: http://android.intel.com:8080/28026
Reviewed-by: Tuominen, TeemuX <teemux.tuominen@intel.com>
unsigned long sum;
u8 checksum;
int i;
+ int zero_flag = 1;
for (i = 0; i < list_len; i++) {
sum = mt9e013_otp_sum(sd, buf, list[i].start, list[i].end);
checksum = sum % MT9E013_OTP_MOD_CHECKSUM;
if (buf[list[i].checksum] != checksum)
return -EINVAL;
+ /*
+ * Checksum must fail if whole data is 0.
+ * Clear zero_flag if data != 0 is found.
+ */
+ if (unlikely(zero_flag && (sum > 0)))
+ zero_flag = 0;
}
- return 0;
+ return !zero_flag ? 0 : -EINVAL;
}
static int