This Linux kernel change "Revert “livepatch: Remove reliable stacktrace check in klp_try_switch_task()”" is included in the Linux 5.3 release. This change is authored by Miroslav Benes <mbenes [at] suse.cz> on Tue Jun 11 16:13:19 2019 +0200. The commit for this change in Linux stable tree is 67059d6 (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 <firstname.lastname@example.org> Acked-by: Josh Poimboeuf <email@example.com> Reviewed-by: Kamalesh Babulal <firstname.lastname@example.org> Signed-off-by: Petr Mladek <email@example.com>
There are 7 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.
kernel/livepatch/transition.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c index 0a3889c..cb85dae 100644 --- a/kernel/livepatch/transition.c +++ b/kernel/livepatch/transition.c @@ -306,6 +306,13 @@ static bool klp_try_switch_task(struct task_struct *task) 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 * state.