Re: [PATCH v2 1/3] arm64: entry: Refactor and modernise annotation for ret_to_user

Mark Rutland
2020-05-01T12:33:56Z

On Fri, May 01, 2020 at 12:54:28PM +0100, Mark Brown wrote:
> As part of an effort to clarify and clean up the assembler annotations
> new macros have been introduced which annotate the start and end of blocks
> of code in assembler files. Currently ret_to_user has an out of line slow
> path work_pending placed above the main function which makes annotating the
> start and end of these blocks of code awkward.
>
> Since work_pending is only referenced from within ret_to_user try to make
> things a bit clearer by moving it after the current ret_to_user and then
> marking both ret_to_user and work_pending as part of a single ret_to_user
> code block.
>
> Signed-off-by: Mark Brown <broonie@kernel.org>

Makes sense to me, and the change looks sound, so:

Acked-by: Mark Rutland <mark.rutland@arm.com>

Mark.

> ---
> arch/arm64/kernel/entry.S | 27 ++++++++++++++-------------
> 1 file changed, 14 insertions(+), 13 deletions(-)
>
> diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
> index ddcde093c433..73e2c8f5b728 100644
> --- a/arch/arm64/kernel/entry.S
> +++ b/arch/arm64/kernel/entry.S
> @@ -727,21 +727,10 @@ el0_error_naked:
> b ret_to_user
> SYM_CODE_END(el0_error)
>
> -/*
> - * Ok, we need to do extra processing, enter the slow path.
> - */
> -work_pending:
> - mov x0, sp // 'regs'
> - bl do_notify_resume
> -#ifdef CONFIG_TRACE_IRQFLAGS
> - bl trace_hardirqs_on // enabled while in userspace
> -#endif
> - ldr x1, [tsk, #TSK_TI_FLAGS] // re-check for single-step
> - b finish_ret_to_user
> /*
> * "slow" syscall return path.
> */
> -ret_to_user:
> +SYM_CODE_START_LOCAL(ret_to_user)
> disable_daif
> gic_prio_kentry_setup tmp=x3
> ldr x1, [tsk, #TSK_TI_FLAGS]
> @@ -753,7 +742,19 @@ finish_ret_to_user:
> bl stackleak_erase
> #endif
> kernel_exit 0
> -ENDPROC(ret_to_user)
> +
> +/*
> + * Ok, we need to do extra processing, enter the slow path.
> + */
> +work_pending:
> + mov x0, sp // 'regs'
> + bl do_notify_resume
> +#ifdef CONFIG_TRACE_IRQFLAGS
> + bl trace_hardirqs_on // enabled while in userspace
> +#endif
> + ldr x1, [tsk, #TSK_TI_FLAGS] // re-check for single-step
> + b finish_ret_to_user
> +SYM_CODE_END(ret_to_user)
>
> .popsection // .entry.text
>
> --
> 2.20.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel