Blame SOURCES/patch-no-unwind_unsafe_stack.patch
|
|
e293be |
diff -up ./arch/x86/kernel/unwind_frame.c.unwind ./arch/x86/kernel/unwind_frame.c
|
|
|
e293be |
--- ./arch/x86/kernel/unwind_frame.c.unwind 2018-03-22 06:40:12.000000000 +0900
|
|
|
e293be |
+++ ./arch/x86/kernel/unwind_frame.c 2018-04-17 21:03:45.000000000 +0900
|
|
|
e293be |
@@ -43,6 +43,7 @@ static bool update_stack_state(struct un
|
|
|
e293be |
return true;
|
|
|
e293be |
}
|
|
|
e293be |
|
|
|
e293be |
+#ifdef CONFIG_X86_64
|
|
|
e293be |
extern const unsigned long __start___unwind_unsafe_stack[],
|
|
|
e293be |
__stop___unwind_unsafe_stack[];
|
|
|
e293be |
|
|
|
e293be |
@@ -57,6 +58,7 @@ static bool unwind_unsafe(struct unwind_
|
|
|
e293be |
|
|
|
e293be |
return false;
|
|
|
e293be |
}
|
|
|
e293be |
+
|
|
|
e293be |
extern const unsigned long __start___unwind_end_of_stack[],
|
|
|
e293be |
__stop___unwind_end_of_stack[],
|
|
|
e293be |
ret_from_fork_nospec_begin[],
|
|
|
e293be |
@@ -82,6 +84,7 @@ static bool unwind_end(struct unwind_sta
|
|
|
e293be |
|
|
|
e293be |
return false;
|
|
|
e293be |
}
|
|
|
e293be |
+#endif
|
|
|
e293be |
|
|
|
e293be |
bool unwind_next_frame(struct unwind_state *state)
|
|
|
e293be |
{
|
|
|
e293be |
@@ -90,11 +93,13 @@ bool unwind_next_frame(struct unwind_sta
|
|
|
e293be |
if (unwind_done(state))
|
|
|
e293be |
return false;
|
|
|
e293be |
|
|
|
e293be |
+#ifdef CONFIG_X86_64
|
|
|
e293be |
if (unwind_unsafe(state))
|
|
|
e293be |
state->error = true;
|
|
|
e293be |
|
|
|
e293be |
if (unwind_end(state))
|
|
|
e293be |
goto the_end;
|
|
|
e293be |
+#endif
|
|
|
e293be |
|
|
|
e293be |
next_bp = (unsigned long *)READ_ONCE(*state->bp);
|
|
|
e293be |
|