From 67059d65f7da537c41513fc52e78eff096092b8c Mon Sep 17 00:00:00 2001 From: Miroslav Benes Date: Tue, 11 Jun 2019 16:13:19 +0200 Subject: [PATCH] Revert "livepatch: Remove reliable stacktrace check in klp_try_switch_task()" This reverts commit 1d98a69e5cef3aeb68bcefab0e67e342d6bb4dad. Commit 31adf2308f33 ("livepatch: Convert error about unsupported reliable stacktrace into a warning") weakened the enforcement for architectures to have reliable stack traces support. The system only warns now about it. It only makes sense to reintroduce the compile time checking in klp_try_switch_task() again and bail out early. Signed-off-by: Miroslav Benes Acked-by: Josh Poimboeuf Reviewed-by: Kamalesh Babulal Signed-off-by: Petr Mladek --- kernel/livepatch/transition.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c index 0a3889c4f617..cb85dae09ce5 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