From ed316bc39cfb1f6dffcc76a245580b43ad5d0225 Mon Sep 17 00:00:00 2001 From: Jacob Garber Date: Wed, 29 May 2019 10:59:30 -0600 Subject: mb/google/{eve,glados}: Copy channel arrays separately DqByteMapCh0 and DqByteMapCh1 are declared adjacently in the FSP_M_CONFIG struct, so it is tempting to begin memcpy at the address of the first array and overwrite both of them at once. However, FSP_M_CONFIG is not declared with the packed attribute, so this is not guaranteed to work and is undefined behaviour to boot. It is cleaner and less tricky to copy them independently. The same is true for DqsMapCpu2DramCh0 and DqsMapCpu2DramCh1, so we change those as well. Change-Id: If394f14c4a39d6787ae31868241229646c26be7a Signed-off-by: Jacob Garber Found-by: Coverity CID 1365730, 14013{38,39,40,42,43} Reviewed-on: https://review.coreboot.org/c/coreboot/+/33066 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi Reviewed-by: Angel Pons --- src/mainboard/google/glados/variants/chell/variant.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/mainboard/google/glados/variants/chell') diff --git a/src/mainboard/google/glados/variants/chell/variant.c b/src/mainboard/google/glados/variants/chell/variant.c index 2d1b363cab..3e8503fe9e 100644 --- a/src/mainboard/google/glados/variants/chell/variant.c +++ b/src/mainboard/google/glados/variants/chell/variant.c @@ -41,10 +41,14 @@ void variant_memory_init_params( /* Rcomp target */ const u16 RcompTarget[5] = { 100, 40, 40, 23, 40 }; - memcpy(memory_params->DqByteMapCh0, dq_map, - sizeof(memory_params->DqByteMapCh0) * 2); - memcpy(memory_params->DqsMapCpu2DramCh0, dqs_map, - sizeof(memory_params->DqsMapCpu2DramCh0) * 2); + memcpy(memory_params->DqByteMapCh0, dq_map[0], + sizeof(memory_params->DqByteMapCh0)); + memcpy(memory_params->DqByteMapCh1, dq_map[1], + sizeof(memory_params->DqByteMapCh1)); + memcpy(memory_params->DqsMapCpu2DramCh0, dqs_map[0], + sizeof(memory_params->DqsMapCpu2DramCh0)); + memcpy(memory_params->DqsMapCpu2DramCh1, dqs_map[1], + sizeof(memory_params->DqsMapCpu2DramCh1)); memcpy(memory_params->RcompResistor, RcompResistor, sizeof(memory_params->RcompResistor)); memcpy(memory_params->RcompTarget, RcompTarget, -- cgit v1.2.3