diff --git a/executer/kernel/mcctrl/control.c b/executer/kernel/mcctrl/control.c index 33a1adbb..fd6839af 100644 --- a/executer/kernel/mcctrl/control.c +++ b/executer/kernel/mcctrl/control.c @@ -335,7 +335,7 @@ static long mcexec_debug_log(ihk_os_t os, unsigned long arg) return 0; } -int mcexec_close_exec(ihk_os_t os); +int mcexec_close_exec(ihk_os_t os, int pid); int mcexec_destroy_per_process_data(ihk_os_t os, int pid); static void release_handler(ihk_os_t os, void *param) @@ -355,7 +355,7 @@ static void release_handler(ihk_os_t os, void *param) } write_unlock_irqrestore(&host_thread_lock, flags); - mcexec_close_exec(os); + mcexec_close_exec(os, info->pid); mcexec_destroy_per_process_data(os, info->pid); @@ -1912,7 +1912,7 @@ out: return retval; } -int mcexec_close_exec(ihk_os_t os) +int mcexec_close_exec(ihk_os_t os, int pid) { struct mckernel_exec_file *mcef = NULL; int found = 0; @@ -1924,7 +1924,7 @@ int mcexec_close_exec(ihk_os_t os) down(&mckernel_exec_file_lock); list_for_each_entry(mcef, &mckernel_exec_files, list) { - if (mcef->os == os && mcef->pid == task_tgid_vnr(current)) { + if (mcef->os == os && mcef->pid == pid) { allow_write_access(mcef->fp); fput(mcef->fp); list_del(&mcef->list); @@ -3075,7 +3075,7 @@ long __mcctrl_control(ihk_os_t os, unsigned int req, unsigned long arg, return mcexec_open_exec(os, (char *)arg); case MCEXEC_UP_CLOSE_EXEC: - return mcexec_close_exec(os); + return mcexec_close_exec(os, task_tgid_vnr(current)); case MCEXEC_UP_PREPARE_DMA: return mcexec_pin_region(os, (unsigned long *)arg);