KernelVMAddressing

Regular addressing:

TASK_SIZE

TASK_UNMAPPED_BASE

mmap_base

i386

PAGE_OFFSET=0xC00000000 (3GB)

PAGE_ALIGN(TASK_SIZE/3)

PAGE_ALIGN( TASK_SIZE - bound(128M, stack_limit, TASK_SIZE/6*5) (- (get_random_int() % (1024*1024))

sparc32

PAGE_ALIGN( TASK_SIZE - bound(128M, stack_limit, TASK_SIZE/6*5) (- (get_random_int() & (1024*1024 - 1))

powerpc32

Legacy VM addressing is enabled in any of the following situations:

  • running 64bit
  • sysctl_legacy_va_layout enabled
  • personality & ADDR_COMPAT_LAYOUT

  • unlimited stack

TASK_SIZE

TASK_UNMAPPED_BASE

mmap_base

i386

PAGE_OFFSET=0xC00000000 (3GB)

PAGE_ALIGN(TASK_SIZE/3)

TASK_UNMAPPED_BASE

x86_64

0x800000000000 - 4096

PAGE_ALIGN(TASK_SIZE/3)

TASK_UNMAPPED_BASE (+ (get_random_int() & 0x0fffffff) << PAGE_SHIFT)

sparc32

TASK_UNMAPPED_BASE (+ (get_random_int() & (1024*1024 - 1))

sparc64

TASK_UNMAPPED_BASE (+ (get_random_int() << PAGE_SHIFT) & 0xffffffff)

powerpc32

powerpc64

KernelVMAddressing (last edited 2008-08-06 16:26:23 by localhost)