diff options
author | Kamal Mostafa <kamal@canonical.com> | 2011-02-03 20:38:04 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-02-14 07:15:43 -0500 |
commit | 77eed821accf5dd962b1f13bed0680e217e49112 (patch) | |
tree | c5df18c70df04a4265b2998b42a9394a2d453d24 | |
parent | 7064d865af804b9b841e7b9a3e9b653e40c3e5ca (diff) |
x86: Fix panic when handling "mem={invalid}" param
Avoid removing all of memory and panicing when "mem={invalid}"
is specified, e.g. mem=blahblah, mem=0, or mem=nopentium (on
platforms other than x86_32).
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
BugLink: http://bugs.launchpad.net/bugs/553464
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Len Brown <len.brown@intel.com>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: <stable@kernel.org> # .3x: as far back as it applies
LKML-Reference: <1296783486-23033-1-git-send-email-kamal@canonical.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | arch/x86/kernel/e820.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 294f26da0c0c..55a59d889dbd 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c | |||
@@ -856,6 +856,9 @@ static int __init parse_memopt(char *p) | |||
856 | 856 | ||
857 | userdef = 1; | 857 | userdef = 1; |
858 | mem_size = memparse(p, &p); | 858 | mem_size = memparse(p, &p); |
859 | /* don't remove all of memory when handling "mem={invalid}" param */ | ||
860 | if (mem_size == 0) | ||
861 | return -EINVAL; | ||
859 | e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1); | 862 | e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1); |
860 | 863 | ||
861 | return 0; | 864 | return 0; |