diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c index 701b2d2..8b4708d 100644 --- a/arch/parisc/kernel/unwind.c +++ b/arch/parisc/kernel/unwind.c @@ -341,8 +341,15 @@ static void unwind_frame_regs(struct unwind_frame_info *info) info->prev_sp = info->sp - frame_size; if (e->Millicode) info->rp = info->r31; - else if (rpoffset) - info->rp = *(unsigned long *)(info->prev_sp - rpoffset); + else if (rpoffset) { + unsigned long tmp; + + if (get_user(tmp, + (unsigned long *)(info->prev_sp - rpoffset))) + info->rp = 0; + else + info->rp = tmp; + } info->prev_ip = info->rp; info->rp = 0; }