summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMd Shofiqul Islam <[email protected]>2026-07-05 13:08:41 +0300
committerFabio Estevam <[email protected]>2026-07-27 11:29:56 -0300
commitd2d005a32b97173d41ac99bfd19d7c9b73184d3a (patch)
tree6f0e490d9c429f02552131a14d32a7cb3b4e7159
parent141b9cab273d88272fec454f8e244ae31b5dd99f (diff)
ge: common: vpd_reader: fix errloc array size in verify_bch()
errloc stores bit positions of errors returned by decode_bch(). The maximum number of correctable errors is ecc_bits, so errloc must have ecc_bits entries. The array was allocated with data_length entries instead, which is the number of EEPROM data bytes -- orders of magnitude larger than needed and incorrect. Fixes: b418dfe16e62 ("board: ge: make VPD code common") Signed-off-by: Md Shofiqul Islam <[email protected]>
-rw-r--r--board/ge/common/vpd_reader.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/board/ge/common/vpd_reader.c b/board/ge/common/vpd_reader.c
index 2422db38013..b3f9e96615d 100644
--- a/board/ge/common/vpd_reader.c
+++ b/board/ge/common/vpd_reader.c
@@ -66,7 +66,7 @@ static int verify_bch(int ecc_bits, unsigned int prim_poly, u8 *data,
return -1;
}
- unsigned int *errloc = (unsigned int *)calloc(data_length,
+ unsigned int *errloc = (unsigned int *)calloc(ecc_bits,
sizeof(unsigned int));
int errors = decode_bch(bch, data, data_length, ecc, NULL, NULL,
errloc);