mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
common/spl: use memmove() in load_simple_fit()
I had trouble booting some am335x boards (both beagleboneblack and a custom board). SPL would start just fine, and apparently load U-Boot proper, but it would hang when jumping to U-Boot. While debugging, I stumbled on this memcpy() which from code inspection very much looked to have overlapping src and dst, and indeed a simple printf revealed calling memcpy(0x8087bf68, 0x8087bf80, 0xf7f8) Now, it will always be with src > dst, our memcpy() implementations "most likely" do forward-copying, and in the end it turned out that this wasn't the culprit after all [*]. But to avoid me or others barking up the wrong tree in the future, and because this use of memcpy() is technically undefined, use memmove() instead. [*] That was358d1cc232("spl: Align FDT load address"), which has since been fixed in master but not the v2025.07 I worked of by52caad0d14("ARM: Align image end to 8 bytes to fit DT alignment"). Signed-off-by: Rasmus Villemoes <ravi@prevas.dk> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@gmx.de>
This commit is contained in:
committed by
Tom Rini
parent
aff7f1314a
commit
122c25c00a
@@ -353,7 +353,7 @@ static int load_simple_fit(struct spl_load_info *info, ulong fit_offset,
|
||||
}
|
||||
length = loadEnd - CONFIG_SYS_LOAD_ADDR;
|
||||
} else {
|
||||
memcpy(load_ptr, src, length);
|
||||
memmove(load_ptr, src, length);
|
||||
}
|
||||
|
||||
if (image_info) {
|
||||
|
||||
Reference in New Issue
Block a user