diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c index 0a3889c4f617f..cb85dae09ce57 100644 --- a/kernel/livepatch/transition.c +++ b/kernel/livepatch/transition.c @@ -305,6 +305,13 @@ static bool klp_try_switch_task(struct task_struct *task) if (task->patch_state == klp_target_state) return true; + /* + * For arches which don't have reliable stack traces, we have to rely + * on other methods (e.g., switching tasks at kernel exit). + */ + if (!klp_have_reliable_stack()) + return false; + /* * Now try to check the stack for any to-be-patched or to-be-unpatched * functions. If all goes well, switch the task to the target patch