diff --git a/[refs] b/[refs] index 69b9f721ff08..610b7897c42c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d86623a0d55a14e7295e8ca1bd258e0c7f8dcb31 +refs/heads/master: 232b957ae93973a5f8619ef61b916744b747478c diff --git a/trunk/arch/x86/kernel/e820.c b/trunk/arch/x86/kernel/e820.c index 15b4393ff9bf..1b76b25b4d9a 100644 --- a/trunk/arch/x86/kernel/e820.c +++ b/trunk/arch/x86/kernel/e820.c @@ -405,6 +405,9 @@ u64 __init e820_update_range(u64 start, u64 size, unsigned old_type, BUG_ON(old_type == new_type); + if (size > (ULLONG_MAX - start)) + size = ULLONG_MAX - start; + for (i = 0; i < e820.nr_map; i++) { struct e820entry *ei = &e820.map[i]; u64 final_start, final_end; @@ -441,6 +444,9 @@ u64 __init e820_remove_range(u64 start, u64 size, unsigned old_type, int i; u64 real_removed_size = 0; + if (size > (ULLONG_MAX - start)) + size = ULLONG_MAX - start; + for (i = 0; i < e820.nr_map; i++) { struct e820entry *ei = &e820.map[i]; u64 final_start, final_end;