From 696398e5ea855f77caffcd665cf2e6376bfc28fb Mon Sep 17 00:00:00 2001 From: David Cohen Date: Thu, 24 Nov 2011 16:48:51 +0200 Subject: [PATCH] [PORT FROM R2] atomisp: mt9e013: fail OTP checksum if only 0's are found 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 Reviewed-on: http://android.intel.com:8080/25232 Reviewed-by: Koskinen, Ilkka Reviewed-by: Gerasimow, Timo Reviewed-by: Koski, Anttu Tested-by: Koski, Anttu Reviewed-by: buildbot Tested-by: buildbot Reviewed-on: http://android.intel.com:8080/28026 Reviewed-by: Tuominen, TeemuX --- drivers/media/video/mt9e013.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/media/video/mt9e013.c b/drivers/media/video/mt9e013.c index 85b9bb2..7f93058 100644 --- a/drivers/media/video/mt9e013.c +++ b/drivers/media/video/mt9e013.c @@ -718,15 +718,22 @@ static int mt9e013_otp_checksum(struct v4l2_subdev *sd, u8 *buf, int list_len, 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 -- 2.7.4