ARC: stack unwinder to bail if PC is not kernel mode

Currently, it doesn't invoke the callback but continues to unwind

Also while at it - simplify the code a bit

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
This commit is contained in:
Vineet Gupta 2015-04-10 14:06:40 +05:30
parent 082ae1e157
commit def32fad84
1 changed files with 8 additions and 10 deletions

View File

@ -122,19 +122,17 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,
while (1) {
address = UNW_PC(&frame_info);
if (address && __kernel_text_address(address)) {
if (consumer_fn(address, arg) == -1)
break;
}
if (!address || !__kernel_text_address(address))
break;
if (consumer_fn(address, arg) == -1)
break;
ret = arc_unwind(&frame_info);
if (ret == 0) {
frame_info.regs.r63 = frame_info.regs.r31;
continue;
} else {
if (ret)
break;
}
frame_info.regs.r63 = frame_info.regs.r31;
}
return address; /* return the last address it saw */