mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	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: Purna Chandra Mandal <purna.mandal@microchip.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Tom Rini
						Tom Rini
					
				
			
			
				
	
			
			
			
						parent
						
							6e2f153895
						
					
				
				
					commit
					8d4f11c203
				
			| @@ -435,7 +435,7 @@ static int bootm_load_os(bootm_headers_t *images, unsigned long *load_end, | |||||||
| 		bootstage_error(BOOTSTAGE_ID_DECOMP_IMAGE); | 		bootstage_error(BOOTSTAGE_ID_DECOMP_IMAGE); | ||||||
| 		return err; | 		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); | 	debug("   kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end); | ||||||
| 	bootstage_mark(BOOTSTAGE_ID_KERNEL_LOADED); | 	bootstage_mark(BOOTSTAGE_ID_KERNEL_LOADED); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user