diff --git a/kernel/thread.c b/kernel/thread.c index 92a975c5118..50613de798a 100644 --- a/kernel/thread.c +++ b/kernel/thread.c @@ -540,7 +540,7 @@ void _impl_k_thread_suspend(struct k_thread *thread) sys_trace_thread_suspend(thread); if (thread == _current) { - (void)_Swap(key); + _reschedule(key); } else { irq_unlock(key); } diff --git a/kernel/thread_abort.c b/kernel/thread_abort.c index 97fb6f2d415..7286cf814f0 100644 --- a/kernel/thread_abort.c +++ b/kernel/thread_abort.c @@ -37,17 +37,7 @@ void _impl_k_thread_abort(k_tid_t thread) _k_thread_single_abort(thread); _thread_monitor_exit(thread); - if (_is_in_isr()) { - irq_unlock(key); - } else { - if (_current == thread) { - (void)_Swap(key); - CODE_UNREACHABLE; - } - - /* The abort handler might have altered the ready queue. */ - _reschedule(key); - } + _reschedule(key); } #endif