diff --git a/arch/x86/mm/vma.c b/arch/x86/mm/vma.c index 3eb9d78e1..9a270eabf 100644 --- a/arch/x86/mm/vma.c +++ b/arch/x86/mm/vma.c @@ -26,6 +26,7 @@ */ #include +#include #include int vma_arch_init(void) @@ -38,15 +39,18 @@ int vma_arch_init(void) goto out; if ((mb_info->flags & MULTIBOOT_INFO_CMDLINE) && cmdline) { + LOG_INFO("vma_arch_init: map cmdline %p (size 0x%zd)", cmdline, cmdsize); + size_t i = 0; - while(((size_t) cmdline + i) <= ((size_t) cmdline + cmdsize)) + while(((size_t) cmdline + i) < ((size_t) cmdline + cmdsize)) { if ((((size_t)cmdline + i) & PAGE_MASK) != ((size_t) mb_info & PAGE_MASK)) { ret = vma_add(((size_t)cmdline + i) & PAGE_MASK, (((size_t)cmdline + i) & PAGE_MASK) + PAGE_SIZE, VMA_READ|VMA_WRITE); if (BUILTIN_EXPECT(ret, 0)) goto out; - i += PAGE_SIZE; } + + i += PAGE_SIZE; } } }