From 29ab087fa2d489a20a50aa1a1069edf550349979 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Tue, 7 Mar 2017 14:21:27 +0900 Subject: [PATCH] execve(): larger allocation for program descriptor --- kernel/syscall.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/syscall.c b/kernel/syscall.c index 36951fcb..6182e1d9 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -1841,13 +1841,13 @@ SYSCALL_DECLARE(execve) ihk_mc_spinlock_unlock_noirq(&vm->memory_range_lock); - desc = ihk_mc_alloc_pages(1, IHK_MC_AP_NOWAIT); + desc = ihk_mc_alloc_pages(4, IHK_MC_AP_NOWAIT); if (!desc) { kprintf("execve(): ERROR: allocating program descriptor\n"); return -ENOMEM; } - memset((void*)desc, 0, PAGE_SIZE); + memset((void*)desc, 0, 4 * PAGE_SIZE); /* Request host to open executable and load ELF section descriptions */ request.number = __NR_execve; @@ -1859,7 +1859,7 @@ SYSCALL_DECLARE(execve) if (ret != 0) { dkprintf("execve(): ERROR: host failed to load elf header, errno: %d\n", ret); - ihk_mc_free_pages(desc, 1); + ihk_mc_free_pages(desc, 4); return -ret; } @@ -1883,7 +1883,7 @@ SYSCALL_DECLARE(execve) kprintf("ERROR: no argv for executable: %s?\n", kfilename? kfilename: ""); if(kfilename) kfree(kfilename); - ihk_mc_free_pages(desc, 1); + ihk_mc_free_pages(desc, 4); return -EINVAL; } @@ -1952,7 +1952,7 @@ SYSCALL_DECLARE(execve) dkprintf("execve(): switching to new process\n"); proc->execed = 1; - ihk_mc_free_pages(desc, 1); + ihk_mc_free_pages(desc, 4); kfree(argv_flat); kfree(envp_flat);