]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - arch/x86/kernel/unwind_guess.c
x86/unwind: Prevent KASAN false positive warnings in guess unwinder
[mirror_ubuntu-artful-kernel.git] / arch / x86 / kernel / unwind_guess.c
index 2d721e533cf48f1114b2d6cc8cacab07b2b31ebb..b80e8bf43cc63b4350185ab1125ee85f1c43d05f 100644 (file)
@@ -7,11 +7,13 @@
 
 unsigned long unwind_get_return_address(struct unwind_state *state)
 {
+       unsigned long addr = READ_ONCE_NOCHECK(*state->sp);
+
        if (unwind_done(state))
                return 0;
 
        return ftrace_graph_ret_addr(state->task, &state->graph_idx,
-                                    *state->sp, state->sp);
+                                    addr, state->sp);
 }
 EXPORT_SYMBOL_GPL(unwind_get_return_address);
 
@@ -23,8 +25,10 @@ bool unwind_next_frame(struct unwind_state *state)
                return false;
 
        do {
+               unsigned long addr = READ_ONCE_NOCHECK(*state->sp);
+
                for (state->sp++; state->sp < info->end; state->sp++)
-                       if (__kernel_text_address(*state->sp))
+                       if (__kernel_text_address(addr))
                                return true;
 
                state->sp = info->next_sp;