Commit be2d11b2 authored by Miroslav Benes's avatar Miroslav Benes Committed by Vasily Gorbik
Browse files

s390/unwind: add stack pointer alignment sanity checks

ABI requires SP to be aligned 8 bytes, report unwinding error otherwise.

Link: https://lkml.kernel.org/r/20191106095601.29986-5-mbenes@suse.cz


Reviewed-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Tested-by: default avatarMiroslav Benes <mbenes@suse.cz>
Signed-off-by: default avatarMiroslav Benes <mbenes@suse.cz>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent bf018ee6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -94,6 +94,10 @@ int get_stack_info(unsigned long sp, struct task_struct *task,
	if (!sp)
		goto unknown;

	/* Sanity check: ABI requires SP to be aligned 8 bytes. */
	if (sp & 0x7)
		goto unknown;

	/* Check per-task stack */
	if (in_task_stack(sp, task, info))
		goto recursion_check;
+4 −0
Original line number Diff line number Diff line
@@ -92,6 +92,10 @@ bool unwind_next_frame(struct unwind_state *state)
		}
	}

	/* Sanity check: ABI requires SP to be aligned 8 bytes. */
	if (sp & 0x7)
		goto out_err;

	ip = ftrace_graph_ret_addr(state->task, &state->graph_idx, ip, (void *) sp);

	/* Update unwind state */