From 5cb75b00c74fc49c2187e355e9311d32d9eb1ca2 Mon Sep 17 00:00:00 2001 From: Tomoki Shirasawa Date: Wed, 7 Mar 2018 09:11:37 +0900 Subject: [PATCH] mcexec_destroy_per_process_data: System calls delegation can not be terminated in error when the last process that closed /dev/mcos0 is a child process. refs #882 --- executer/kernel/mcctrl/control.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/executer/kernel/mcctrl/control.c b/executer/kernel/mcctrl/control.c index 7bec208e..945f1111 100644 --- a/executer/kernel/mcctrl/control.c +++ b/executer/kernel/mcctrl/control.c @@ -367,7 +367,7 @@ static long mcexec_debug_log(ihk_os_t os, unsigned long arg) } int mcexec_close_exec(ihk_os_t os); -int mcexec_destroy_per_process_data(ihk_os_t os); +int mcexec_destroy_per_process_data(ihk_os_t os, int pid); static void release_handler(ihk_os_t os, void *param) { @@ -387,7 +387,7 @@ static void release_handler(ihk_os_t os, void *param) mcexec_close_exec(os); - mcexec_destroy_per_process_data(os); + mcexec_destroy_per_process_data(os, info->pid); memset(&isp, '\0', sizeof isp); isp.msg = SCD_MSG_CLEANUP_PROCESS; @@ -1720,12 +1720,12 @@ int mcexec_create_per_process_data(ihk_os_t os) return 0; } -int mcexec_destroy_per_process_data(ihk_os_t os) +int mcexec_destroy_per_process_data(ihk_os_t os, int pid) { struct mcctrl_usrdata *usrdata = ihk_host_os_get_usrdata(os); struct mcctrl_per_proc_data *ppd = NULL; - ppd = mcctrl_get_per_proc_data(usrdata, task_tgid_vnr(current)); + ppd = mcctrl_get_per_proc_data(usrdata, pid); if (ppd) { /* One for the reference and one for deallocation.