From 201fa7fb55dae2fa242fdb90c1fc99814ef713d9 Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Thu, 20 Sep 2018 13:43:03 +0900 Subject: [PATCH] fork: copy saved_cmdline from parent process This fixes empty children names for forked children. Change-Id: I9512f0981d2a241c106ee3e8500f2084ef61a660 --- kernel/process.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/kernel/process.c b/kernel/process.c index 5366cb08..8b0f40c9 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -442,18 +442,30 @@ clone_thread(struct thread *org, unsigned long pc, unsigned long sp, proc->termsig = termsig; asp = create_address_space(cpu_local_var(resource_set), 1); - if(!asp){ + if (!asp) { kfree(proc); goto err_free_proc; } proc->vm = kmalloc(sizeof(struct process_vm), IHK_MC_AP_NOWAIT); - if(!proc->vm){ + if (!proc->vm) { release_address_space(asp); kfree(proc); goto err_free_proc; } memset(proc->vm, '\0', sizeof(struct process_vm)); + proc->saved_cmdline_len = org->proc->saved_cmdline_len; + proc->saved_cmdline = kmalloc(proc->saved_cmdline_len, + IHK_MC_AP_NOWAIT); + if (!proc->saved_cmdline) { + release_address_space(asp); + kfree(proc->vm); + kfree(proc); + goto err_free_proc; + } + memcpy(proc->saved_cmdline, org->proc->saved_cmdline, + proc->saved_cmdline_len); + dkprintf("fork(): init_process_vm()\n"); if (init_process_vm(proc, asp, proc->vm) != 0) { release_address_space(asp);