|
@@ -184,9 +184,9 @@ void __init e820_print_map(char *who)
|
|
* overwritten in the same location, starting at biosmap.
|
|
* overwritten in the same location, starting at biosmap.
|
|
*
|
|
*
|
|
* The integer pointed to by pnr_map must be valid on entry (the
|
|
* The integer pointed to by pnr_map must be valid on entry (the
|
|
- * current number of valid entries located at biosmap) and will
|
|
|
|
- * be updated on return, with the new number of valid entries
|
|
|
|
- * (something no more than max_nr_map.)
|
|
|
|
|
|
+ * current number of valid entries located at biosmap). If the
|
|
|
|
+ * sanitizing succeeds the *pnr_map will be updated with the new
|
|
|
|
+ * number of valid entries (something no more than max_nr_map).
|
|
*
|
|
*
|
|
* The return value from sanitize_e820_map() is zero if it
|
|
* The return value from sanitize_e820_map() is zero if it
|
|
* successfully 'sanitized' the map entries passed in, and is -1
|
|
* successfully 'sanitized' the map entries passed in, and is -1
|
|
@@ -561,23 +561,15 @@ u64 __init e820_remove_range(u64 start, u64 size, unsigned old_type,
|
|
|
|
|
|
void __init update_e820(void)
|
|
void __init update_e820(void)
|
|
{
|
|
{
|
|
- u32 nr_map;
|
|
|
|
-
|
|
|
|
- nr_map = e820.nr_map;
|
|
|
|
- if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &nr_map))
|
|
|
|
|
|
+ if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map))
|
|
return;
|
|
return;
|
|
- e820.nr_map = nr_map;
|
|
|
|
printk(KERN_INFO "e820: modified physical RAM map:\n");
|
|
printk(KERN_INFO "e820: modified physical RAM map:\n");
|
|
e820_print_map("modified");
|
|
e820_print_map("modified");
|
|
}
|
|
}
|
|
static void __init update_e820_saved(void)
|
|
static void __init update_e820_saved(void)
|
|
{
|
|
{
|
|
- u32 nr_map;
|
|
|
|
-
|
|
|
|
- nr_map = e820_saved.nr_map;
|
|
|
|
- if (sanitize_e820_map(e820_saved.map, ARRAY_SIZE(e820_saved.map), &nr_map))
|
|
|
|
- return;
|
|
|
|
- e820_saved.nr_map = nr_map;
|
|
|
|
|
|
+ sanitize_e820_map(e820_saved.map, ARRAY_SIZE(e820_saved.map),
|
|
|
|
+ &e820_saved.nr_map);
|
|
}
|
|
}
|
|
#define MAX_GAP_END 0x100000000ull
|
|
#define MAX_GAP_END 0x100000000ull
|
|
/*
|
|
/*
|
|
@@ -898,11 +890,9 @@ early_param("memmap", parse_memmap_opt);
|
|
void __init finish_e820_parsing(void)
|
|
void __init finish_e820_parsing(void)
|
|
{
|
|
{
|
|
if (userdef) {
|
|
if (userdef) {
|
|
- u32 nr = e820.nr_map;
|
|
|
|
-
|
|
|
|
- if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &nr) < 0)
|
|
|
|
|
|
+ if (sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map),
|
|
|
|
+ &e820.nr_map) < 0)
|
|
early_panic("Invalid user supplied memory map");
|
|
early_panic("Invalid user supplied memory map");
|
|
- e820.nr_map = nr;
|
|
|
|
|
|
|
|
printk(KERN_INFO "e820: user-defined physical RAM map:\n");
|
|
printk(KERN_INFO "e820: user-defined physical RAM map:\n");
|
|
e820_print_map("user");
|
|
e820_print_map("user");
|