From a3eccacba9f7ba5a1053c31757f2791453fcdf24 Mon Sep 17 00:00:00 2001 From: Patryk Duda Date: Thu, 15 Jul 2021 19:56:01 +0000 Subject: {bep, libfp}/fpc_private: Align enroll_ctx address to 4 bytes Address of enroll_ctx array is provided to the FP library and under some circumstances library can perform 4 byte load/store which needs address to be 4 byte aligned. This was found when debugging problem with skipped initialization during fp_sensor_init(). Bio_sensor pointer was uninitialized, and when enrollment was requested, FPMCU crashed. It looked like library was performing 4 bytes access to enroll_ctx when bio_sensor was NULL. BUG=b:170432597 BRANCH=none TEST=make BOARD=dartmonkey TEST=make BOARD=bloonchipper Signed-off-by: Patryk Duda Change-Id: I90b64d560448b4d737b09c706a636a567a3db943 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3033242 Reviewed-by: Craig Hesling --- driver/fingerprint/fpc/bep/fpc_private.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'driver/fingerprint/fpc/bep') diff --git a/driver/fingerprint/fpc/bep/fpc_private.c b/driver/fingerprint/fpc/bep/fpc_private.c index 0a405d4ad5..ae4b8d834b 100644 --- a/driver/fingerprint/fpc/bep/fpc_private.c +++ b/driver/fingerprint/fpc/bep/fpc_private.c @@ -19,7 +19,7 @@ #define CPRINTF(format, args...) cprintf(CC_FP, format, ## args) #define CPRINTS(format, args...) cprints(CC_FP, format, ## args) -static uint8_t enroll_ctx[FP_ALGORITHM_ENROLLMENT_SIZE] = {0}; +static uint8_t enroll_ctx[FP_ALGORITHM_ENROLLMENT_SIZE] __aligned(4) = {0}; /* Recorded error flags */ static uint16_t errors; -- cgit v1.2.1