diff options
Diffstat (limited to 'arch/x86/kernel')
| -rw-r--r-- | arch/x86/kernel/e820.c | 9 | ||||
| -rw-r--r-- | arch/x86/kernel/e820_64.c | 6 | 
2 files changed, 9 insertions, 6 deletions
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 2cb686f60d0..2396b9da802 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c @@ -95,7 +95,7 @@ void __init add_memory_region(u64 start, u64 size, int type)  {  	int x = e820.nr_map; -	if (x == E820MAX) { +	if (x == ARRAY_SIZE(e820.map)) {  		printk(KERN_ERR "Ooops! Too many entries in the memory map!\n");  		return;  	} @@ -142,7 +142,8 @@ void __init e820_print_map(char *who)   * replaces the original e820 map with a new one, removing overlaps.   *   */ -int __init sanitize_e820_map(struct e820entry *biosmap, char *pnr_map) +int __init sanitize_e820_map(struct e820entry *biosmap, int max_nr_map, +				char *pnr_map)  {  	struct change_member {  		struct e820entry *pbios; /* pointer to original bios entry */ @@ -314,7 +315,7 @@ int __init sanitize_e820_map(struct e820entry *biosmap, char *pnr_map)  					 * no more space left for new  					 * bios entries ?  					 */ -					if (++new_bios_entry >= E820MAX) +					if (++new_bios_entry >= max_nr_map)  						break;  			}  			if (current_type != 0)	{ @@ -403,7 +404,7 @@ void __init update_e820(void)  	u8 nr_map;  	nr_map = e820.nr_map; -	if (sanitize_e820_map(e820.map, &nr_map)) +	if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &nr_map))  		return;  	e820.nr_map = nr_map;  	printk(KERN_INFO "modified physical RAM map:\n"); diff --git a/arch/x86/kernel/e820_64.c b/arch/x86/kernel/e820_64.c index c10b4aece5e..58dc6eee4d4 100644 --- a/arch/x86/kernel/e820_64.c +++ b/arch/x86/kernel/e820_64.c @@ -413,7 +413,9 @@ char *__init machine_specific_memory_setup(void)  	 * Otherwise fake a memory map; one section from 0k->640k,  	 * the next section from 1mb->appropriate_mem_k  	 */ -	sanitize_e820_map(boot_params.e820_map, &boot_params.e820_entries); +	sanitize_e820_map(boot_params.e820_map, +			ARRAY_SIZE(boot_params.e820_map), +			&boot_params.e820_entries);  	if (copy_e820_map(boot_params.e820_map, boot_params.e820_entries) < 0)  		early_panic("Cannot find a valid memory map");  	printk(KERN_INFO "BIOS-provided physical RAM map:\n"); @@ -484,7 +486,7 @@ void __init finish_e820_parsing(void)  	if (userdef) {  		char nr = e820.nr_map; -		if (sanitize_e820_map(e820.map, &nr) < 0) +		if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &nr) < 0)  			early_panic("Invalid user supplied memory map");  		e820.nr_map = nr;  |