diff options
Diffstat (limited to 'arch/arc/kernel/stacktrace.c')
| -rw-r--r-- | arch/arc/kernel/stacktrace.c | 18 | 
1 files changed, 8 insertions, 10 deletions
diff --git a/arch/arc/kernel/stacktrace.c b/arch/arc/kernel/stacktrace.c index 92320d6f737c..001de4ce711e 100644 --- a/arch/arc/kernel/stacktrace.c +++ b/arch/arc/kernel/stacktrace.c @@ -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; -		ret = arc_unwind(&frame_info); +		if (consumer_fn(address, arg) == -1) +			break; -		if (ret == 0) { -			frame_info.regs.r63 = frame_info.regs.r31; -			continue; -		} else { +		ret = arc_unwind(&frame_info); +		if (ret)  			break; -		} + +		frame_info.regs.r63 = frame_info.regs.r31;  	}  	return address;		/* return the last address it saw */  |