fork: copy saved_cmdline from parent process
This fixes empty children names for forked children. Change-Id: I9512f0981d2a241c106ee3e8500f2084ef61a660
This commit is contained in:
committed by
Masamichi Takagi
parent
dd676f7149
commit
201fa7fb55
@@ -442,18 +442,30 @@ clone_thread(struct thread *org, unsigned long pc, unsigned long sp,
|
|||||||
|
|
||||||
proc->termsig = termsig;
|
proc->termsig = termsig;
|
||||||
asp = create_address_space(cpu_local_var(resource_set), 1);
|
asp = create_address_space(cpu_local_var(resource_set), 1);
|
||||||
if(!asp){
|
if (!asp) {
|
||||||
kfree(proc);
|
kfree(proc);
|
||||||
goto err_free_proc;
|
goto err_free_proc;
|
||||||
}
|
}
|
||||||
proc->vm = kmalloc(sizeof(struct process_vm), IHK_MC_AP_NOWAIT);
|
proc->vm = kmalloc(sizeof(struct process_vm), IHK_MC_AP_NOWAIT);
|
||||||
if(!proc->vm){
|
if (!proc->vm) {
|
||||||
release_address_space(asp);
|
release_address_space(asp);
|
||||||
kfree(proc);
|
kfree(proc);
|
||||||
goto err_free_proc;
|
goto err_free_proc;
|
||||||
}
|
}
|
||||||
memset(proc->vm, '\0', sizeof(struct process_vm));
|
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");
|
dkprintf("fork(): init_process_vm()\n");
|
||||||
if (init_process_vm(proc, asp, proc->vm) != 0) {
|
if (init_process_vm(proc, asp, proc->vm) != 0) {
|
||||||
release_address_space(asp);
|
release_address_space(asp);
|
||||||
|
|||||||
Reference in New Issue
Block a user