diff --git a/kernel/process.c b/kernel/process.c index 0da7b70d..65810428 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -2391,19 +2391,19 @@ void destroy_thread(struct thread *thread) void release_thread(struct thread *thread) { struct process_vm *vm; - struct mcs_rwlock_node lock; + struct mcs_rwlock_node_irqsave lock; struct timespec ats; if (!ihk_atomic_dec_and_test(&thread->refcount)) { return; } - mcs_rwlock_writer_lock_noirq(&thread->proc->update_lock, &lock); + mcs_rwlock_writer_lock(&thread->proc->update_lock, &lock); tsc_to_ts(thread->system_tsc, &ats); ts_add(&thread->proc->stime, &ats); tsc_to_ts(thread->user_tsc, &ats); ts_add(&thread->proc->utime, &ats); - mcs_rwlock_writer_unlock_noirq(&thread->proc->update_lock, &lock); + mcs_rwlock_writer_unlock(&thread->proc->update_lock, &lock); vm = thread->vm; diff --git a/kernel/syscall.c b/kernel/syscall.c index 5a87d54c..2a0e0d8e 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -307,7 +307,7 @@ long do_syscall(struct syscall_request *req, int cpu, int pid) kprintf("%s: proxy PID %d is dead, terminate()\n", __FUNCTION__, thread->proc->pid); thread->proc->nohost = 1; - terminate(-1, 0); + terminate(0, SIGKILL); } #ifdef PROFILE_ENABLE