Loading kernel/livepatch/transition.c +8 −3 Original line number Diff line number Diff line Loading @@ -259,7 +259,6 @@ static int klp_check_stack(struct task_struct *task, char *err_buf) int ret, nr_entries; ret = stack_trace_save_tsk_reliable(task, entries, ARRAY_SIZE(entries)); WARN_ON_ONCE(ret == -ENOSYS); if (ret < 0) { snprintf(err_buf, STACK_ERR_BUF_SIZE, "%s: %s:%d has an unreliable stack\n", Loading Loading @@ -293,11 +292,11 @@ static int klp_check_stack(struct task_struct *task, char *err_buf) */ static bool klp_try_switch_task(struct task_struct *task) { static char err_buf[STACK_ERR_BUF_SIZE]; struct rq *rq; struct rq_flags flags; int ret; bool success = false; char err_buf[STACK_ERR_BUF_SIZE]; err_buf[0] = '\0'; Loading @@ -305,6 +304,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 Loading Loading @@ -340,7 +346,6 @@ static bool klp_try_switch_task(struct task_struct *task) pr_debug("%s", err_buf); return success; } /* Loading kernel/stacktrace.c +0 −8 Original line number Diff line number Diff line Loading @@ -254,14 +254,6 @@ save_stack_trace_regs(struct pt_regs *regs, struct stack_trace *trace) WARN_ONCE(1, KERN_INFO "save_stack_trace_regs() not implemented yet.\n"); } __weak int save_stack_trace_tsk_reliable(struct task_struct *tsk, struct stack_trace *trace) { WARN_ONCE(1, KERN_INFO "save_stack_tsk_reliable() not implemented yet.\n"); return -ENOSYS; } /** * stack_trace_save - Save a stack trace into a storage array * @store: Pointer to storage array Loading Loading
kernel/livepatch/transition.c +8 −3 Original line number Diff line number Diff line Loading @@ -259,7 +259,6 @@ static int klp_check_stack(struct task_struct *task, char *err_buf) int ret, nr_entries; ret = stack_trace_save_tsk_reliable(task, entries, ARRAY_SIZE(entries)); WARN_ON_ONCE(ret == -ENOSYS); if (ret < 0) { snprintf(err_buf, STACK_ERR_BUF_SIZE, "%s: %s:%d has an unreliable stack\n", Loading Loading @@ -293,11 +292,11 @@ static int klp_check_stack(struct task_struct *task, char *err_buf) */ static bool klp_try_switch_task(struct task_struct *task) { static char err_buf[STACK_ERR_BUF_SIZE]; struct rq *rq; struct rq_flags flags; int ret; bool success = false; char err_buf[STACK_ERR_BUF_SIZE]; err_buf[0] = '\0'; Loading @@ -305,6 +304,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 Loading Loading @@ -340,7 +346,6 @@ static bool klp_try_switch_task(struct task_struct *task) pr_debug("%s", err_buf); return success; } /* Loading
kernel/stacktrace.c +0 −8 Original line number Diff line number Diff line Loading @@ -254,14 +254,6 @@ save_stack_trace_regs(struct pt_regs *regs, struct stack_trace *trace) WARN_ONCE(1, KERN_INFO "save_stack_trace_regs() not implemented yet.\n"); } __weak int save_stack_trace_tsk_reliable(struct task_struct *tsk, struct stack_trace *trace) { WARN_ONCE(1, KERN_INFO "save_stack_tsk_reliable() not implemented yet.\n"); return -ENOSYS; } /** * stack_trace_save - Save a stack trace into a storage array * @store: Pointer to storage array Loading