Skip to content

Commit

Permalink
Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux…
Browse files Browse the repository at this point in the history
…/kernel/git/tip/tip

Pull x86 mm cleanups from Ingo Molnar:
 "Two cleanups: simplify parse_setup_data() and sanitize_e820_map()
  usage"

* 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86, e820: Clean up sanitize_e820_map() users
  x86, setup: Let early_memremap() handle page alignment
  • Loading branch information
Linus Torvalds committed Feb 10, 2015
2 parents a8f7684 + d574ffa commit 57d3629
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 23 deletions.
26 changes: 8 additions & 18 deletions arch/x86/kernel/e820.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,9 +184,9 @@ void __init e820_print_map(char *who)
* overwritten in the same location, starting at biosmap.
*
* 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
* successfully 'sanitized' the map entries passed in, and is -1
Expand Down Expand Up @@ -561,23 +561,15 @@ u64 __init e820_remove_range(u64 start, u64 size, unsigned old_type,

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;
e820.nr_map = nr_map;
printk(KERN_INFO "e820: modified physical RAM map:\n");
e820_print_map("modified");
}
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
/*
Expand Down Expand Up @@ -898,11 +890,9 @@ early_param("memmap", parse_memmap_opt);
void __init finish_e820_parsing(void)
{
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");
e820.nr_map = nr;

printk(KERN_INFO "e820: user-defined physical RAM map:\n");
e820_print_map("user");
Expand Down
8 changes: 3 additions & 5 deletions arch/x86/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -431,15 +431,13 @@ static void __init parse_setup_data(void)

pa_data = boot_params.hdr.setup_data;
while (pa_data) {
u32 data_len, map_len, data_type;
u32 data_len, data_type;

map_len = max(PAGE_SIZE - (pa_data & ~PAGE_MASK),
(u64)sizeof(struct setup_data));
data = early_memremap(pa_data, map_len);
data = early_memremap(pa_data, sizeof(*data));
data_len = data->len + sizeof(struct setup_data);
data_type = data->type;
pa_next = data->next;
early_iounmap(data, map_len);
early_iounmap(data, sizeof(*data));

switch (data_type) {
case SETUP_E820_EXT:
Expand Down

0 comments on commit 57d3629

Please sign in to comment.