]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
fru: ops: Return error from checksum if data is all zero's
authorAshok Reddy Soma <ashok.reddy.soma@xilinx.com>
Wed, 23 Feb 2022 14:00:57 +0000 (15:00 +0100)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 7 Mar 2022 07:48:21 +0000 (08:48 +0100)
fru_checksum function is simply adding all the bytes and returning the
sum. If the data passed to this function is all zero's then it will
return 0, and the functions calling this api will assume that checksum
is correct. Ideally this is not good. Fix this by returning error if all
the data is 0's.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Link: https://lore.kernel.org/r/ac0366fe55c60a818a3f9ed33d96826c817d5520.1645624855.git.michal.simek@xilinx.com
board/xilinx/common/fru_ops.c

index a0a1441a8eefd094d179e796d8e3c2812dd25144..058e750c442f50c347d4abadb0a3fd5a227b3912 100644 (file)
@@ -39,12 +39,20 @@ static int fru_check_language(u8 code)
 u8 fru_checksum(u8 *addr, u8 len)
 {
        u8 checksum = 0;
+       u8 cnt = len;
 
        while (len--) {
+               if (*addr == 0)
+                       cnt--;
+
                checksum += *addr;
                addr++;
        }
 
+       /* If all data bytes are 0's return error */
+       if (!cnt)
+               return EINVAL;
+
        return checksum;
 }