Loading arch/parisc/kernel/unwind.c +12 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/slab.h> #include <linux/kallsyms.h> #include <linux/sort.h> #include <linux/sched.h> #include <linux/uaccess.h> #include <asm/assembly.h> Loading Loading @@ -279,6 +280,17 @@ static void unwind_frame_regs(struct unwind_frame_info *info) info->prev_sp = sp - 64; info->prev_ip = 0; /* The stack is at the end inside the thread_union * struct. If we reach data, we have reached the * beginning of the stack and should stop unwinding. */ if (info->prev_sp >= (unsigned long) task_thread_info(info->t) && info->prev_sp < ((unsigned long) task_thread_info(info->t) + THREAD_SZ_ALGN)) { info->prev_sp = 0; break; } if (get_user(tmp, (unsigned long *)(info->prev_sp - RP_OFFSET))) break; info->prev_ip = tmp; Loading Loading
arch/parisc/kernel/unwind.c +12 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/slab.h> #include <linux/kallsyms.h> #include <linux/sort.h> #include <linux/sched.h> #include <linux/uaccess.h> #include <asm/assembly.h> Loading Loading @@ -279,6 +280,17 @@ static void unwind_frame_regs(struct unwind_frame_info *info) info->prev_sp = sp - 64; info->prev_ip = 0; /* The stack is at the end inside the thread_union * struct. If we reach data, we have reached the * beginning of the stack and should stop unwinding. */ if (info->prev_sp >= (unsigned long) task_thread_info(info->t) && info->prev_sp < ((unsigned long) task_thread_info(info->t) + THREAD_SZ_ALGN)) { info->prev_sp = 0; break; } if (get_user(tmp, (unsigned long *)(info->prev_sp - RP_OFFSET))) break; info->prev_ip = tmp; Loading