Skip to content
Snippets Groups Projects
Commit 8d4f11c2 authored by Purna Chandra Mandal's avatar Purna Chandra Mandal Committed by Tom Rini
Browse files

bootm: fix size arg of flush_cache() in bootm_load_os().


Variable _load_end_ points to end address of uncompressed buffer
(*not* uncomress_buffer_end / sizeof(ulong)), so multipling uncompressed
size with sizeof(ulong) is grossly incorrect in flush_cache().
It might lead to access of address beyond valid memory range and hang the CPU.

Tested on MIPS architecture by using compressed(gzip, lzma)
and uncompressed uImage.

Signed-off-by: default avatarPurna Chandra Mandal <purna.mandal@microchip.com>
Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
Reviewed-by: default avatarDaniel Schwierzeck <daniel.schwierzeck@gmail.com>
parent 6e2f1538
No related branches found
No related tags found
No related merge requests found
......@@ -435,7 +435,7 @@ static int bootm_load_os(bootm_headers_t *images, unsigned long *load_end,
bootstage_error(BOOTSTAGE_ID_DECOMP_IMAGE);
return err;
}
flush_cache(load, (*load_end - load) * sizeof(ulong));
flush_cache(load, *load_end - load);
debug(" kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end);
bootstage_mark(BOOTSTAGE_ID_KERNEL_LOADED);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment