Commit 60a2988a authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds

uml: physical memory shouldn't include initial stack

The top of physical memory should be below the initial process stack, not the
top of the address space, at least for as long as the stack isn't known to the
kernel VM system and appropriately reserved.

Cc: "Christopher S. Aker" <caker@theshore.net>
Signed-off-by: default avatarJeff Dike <jdike@linux.intel.com>
Cc: WANG Cong <xiyou.wangcong@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent a7dfa940
...@@ -258,6 +258,7 @@ int __init linux_main(int argc, char **argv) ...@@ -258,6 +258,7 @@ int __init linux_main(int argc, char **argv)
{ {
unsigned long avail, diff; unsigned long avail, diff;
unsigned long virtmem_size, max_physmem; unsigned long virtmem_size, max_physmem;
unsigned long stack;
unsigned int i; unsigned int i;
int add; int add;
char * mode; char * mode;
...@@ -348,7 +349,9 @@ int __init linux_main(int argc, char **argv) ...@@ -348,7 +349,9 @@ int __init linux_main(int argc, char **argv)
} }
virtmem_size = physmem_size; virtmem_size = physmem_size;
avail = TASK_SIZE - start_vm; stack = (unsigned long) argv;
stack &= ~(1024 * 1024 - 1);
avail = stack - start_vm;
if (physmem_size > avail) if (physmem_size > avail)
virtmem_size = avail; virtmem_size = avail;
end_vm = start_vm + virtmem_size; end_vm = start_vm + virtmem_size;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment