From: Cristian Marussi <cristian.marussi@arm.com> To: linux-kselftest@vger.kernel.org, linux-arm-kernel@lists.infradead.org, shuah@kernel.org Cc: andreyknvl@google.com, dave.martin@arm.com Subject: [PATCH v3 11/11] kselftest: arm64: fake_sigreturn_misaligned_sp Date: Fri, 2 Aug 2019 18:03:00 +0100 [thread overview] Message-ID: <20190802170300.20662-12-cristian.marussi@arm.com> (raw) In-Reply-To: <20190802170300.20662-1-cristian.marussi@arm.com> Added a simple fake_sigreturn testcase which places a valid sigframe on a non-16 bytes aligned SP. fake_sigretrun() helper function has been patched accordingly to support placing a sigframe on a non-16 bytes aligned address. Expects a SIGSEGV on test PASS. Adds also a test TODO lists holding some further test ideas. Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> --- Re-added this text after fixing the forced misaglinment procedure in fake_sigreturn() itself: require a ZERO alignment and you'll get your sigframe placed on a misaligned SP (2-bytes off the 16-align) --- .../testing/selftests/arm64/signal/signals.S | 21 +++++++++---- .../arm64/signal/testcases/TODO.readme | 8 +++++ .../testcases/fake_sigreturn_misaligned_sp.c | 30 +++++++++++++++++++ 3 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 tools/testing/selftests/arm64/signal/testcases/TODO.readme create mode 100644 tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_misaligned_sp.c diff --git a/tools/testing/selftests/arm64/signal/signals.S b/tools/testing/selftests/arm64/signal/signals.S index 6262b877400b..2099871176ed 100644 --- a/tools/testing/selftests/arm64/signal/signals.S +++ b/tools/testing/selftests/arm64/signal/signals.S @@ -13,19 +13,28 @@ call_fmt: .globl fake_sigreturn -/* fake_sigreturn x0:&sigframe, x1:sigframe_size, x2:alignment_SP */ +/* fake_sigreturn x0:&sigframe, x1:sigframe_sz, x2:align */ fake_sigreturn: - mov x20, x0 - mov x21, x1 - mov x22, x2 - mov x23, sp - /* create space on the stack for fake sigframe..."x22"-aligned */ + /* Save args and decide which aligment to enforce */ + mov x23, sp + mov x20, x0 + mov x21, x1 + /* x22 and x24 used for forcing alignment or misalignment */ + mov x22, x2 + mov x24, #0 + cbnz x22, 1f + mov x22, #16 + mov x24, #2 + +1: /* create space on the stack for fake sigframe..."x22"-aligned */ mov x0, #0 add x0, x21, x22 sub x22, x22, #1 bic x0, x0, x22 sub x23, x23, x0 + /* force misaligned by x24 bytes if required alignment was zero */ + add x23, x23, x24 ldr x0, =call_fmt mov x1, x21 diff --git a/tools/testing/selftests/arm64/signal/testcases/TODO.readme b/tools/testing/selftests/arm64/signal/testcases/TODO.readme new file mode 100644 index 000000000000..5c949492e7ab --- /dev/null +++ b/tools/testing/selftests/arm64/signal/testcases/TODO.readme @@ -0,0 +1,8 @@ +Some more possible ideas for signals tests: + +- fake_sigreturn_unmapped_sp +- fake_sigreturn_kernelspace_sp +- fake_sigreturn_sve_bad_extra_context +- mangle_sve_invalid_extra_context +- mangle_pstate_invalid_el for H modes (+ macroization ?) +- fake_sigreturn_overflow_reserved diff --git a/tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_misaligned_sp.c b/tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_misaligned_sp.c new file mode 100644 index 000000000000..3ee8c500c7d1 --- /dev/null +++ b/tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_misaligned_sp.c @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright (C) 2019 ARM Limited */ + +#include <ucontext.h> + +#include "test_signals_utils.h" +#include "testcases.h" + +struct fake_sigframe sf; + +static int fake_sigreturn_misaligned_run(struct tdescr *td, + siginfo_t *si, ucontext_t *uc) +{ + /* just to fill the ucontext_t with something real */ + if (!get_current_context(td, &sf.uc)) + return 1; + + /* Forcing sigframe on misaligned (=!16) SP */ + fake_sigreturn(&sf, sizeof(sf), 0); + + return 1; +} + +struct tdescr tde = { + .name = "FAKE_SIGRETURN_MISALIGNED_SP", + .descr = "Triggers a fake sigreturn with a misaligned sigframe on SP", + .sig_ok = SIGSEGV, + .timeout = 3, + .run = fake_sigreturn_misaligned_run, +}; -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Cristian Marussi <cristian.marussi@arm.com> To: linux-kselftest@vger.kernel.org, linux-arm-kernel@lists.infradead.org, shuah@kernel.org Cc: andreyknvl@google.com, dave.martin@arm.com Subject: [PATCH v3 11/11] kselftest: arm64: fake_sigreturn_misaligned_sp Date: Fri, 2 Aug 2019 18:03:00 +0100 [thread overview] Message-ID: <20190802170300.20662-12-cristian.marussi@arm.com> (raw) In-Reply-To: <20190802170300.20662-1-cristian.marussi@arm.com> Added a simple fake_sigreturn testcase which places a valid sigframe on a non-16 bytes aligned SP. fake_sigretrun() helper function has been patched accordingly to support placing a sigframe on a non-16 bytes aligned address. Expects a SIGSEGV on test PASS. Adds also a test TODO lists holding some further test ideas. Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> --- Re-added this text after fixing the forced misaglinment procedure in fake_sigreturn() itself: require a ZERO alignment and you'll get your sigframe placed on a misaligned SP (2-bytes off the 16-align) --- .../testing/selftests/arm64/signal/signals.S | 21 +++++++++---- .../arm64/signal/testcases/TODO.readme | 8 +++++ .../testcases/fake_sigreturn_misaligned_sp.c | 30 +++++++++++++++++++ 3 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 tools/testing/selftests/arm64/signal/testcases/TODO.readme create mode 100644 tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_misaligned_sp.c diff --git a/tools/testing/selftests/arm64/signal/signals.S b/tools/testing/selftests/arm64/signal/signals.S index 6262b877400b..2099871176ed 100644 --- a/tools/testing/selftests/arm64/signal/signals.S +++ b/tools/testing/selftests/arm64/signal/signals.S @@ -13,19 +13,28 @@ call_fmt: .globl fake_sigreturn -/* fake_sigreturn x0:&sigframe, x1:sigframe_size, x2:alignment_SP */ +/* fake_sigreturn x0:&sigframe, x1:sigframe_sz, x2:align */ fake_sigreturn: - mov x20, x0 - mov x21, x1 - mov x22, x2 - mov x23, sp - /* create space on the stack for fake sigframe..."x22"-aligned */ + /* Save args and decide which aligment to enforce */ + mov x23, sp + mov x20, x0 + mov x21, x1 + /* x22 and x24 used for forcing alignment or misalignment */ + mov x22, x2 + mov x24, #0 + cbnz x22, 1f + mov x22, #16 + mov x24, #2 + +1: /* create space on the stack for fake sigframe..."x22"-aligned */ mov x0, #0 add x0, x21, x22 sub x22, x22, #1 bic x0, x0, x22 sub x23, x23, x0 + /* force misaligned by x24 bytes if required alignment was zero */ + add x23, x23, x24 ldr x0, =call_fmt mov x1, x21 diff --git a/tools/testing/selftests/arm64/signal/testcases/TODO.readme b/tools/testing/selftests/arm64/signal/testcases/TODO.readme new file mode 100644 index 000000000000..5c949492e7ab --- /dev/null +++ b/tools/testing/selftests/arm64/signal/testcases/TODO.readme @@ -0,0 +1,8 @@ +Some more possible ideas for signals tests: + +- fake_sigreturn_unmapped_sp +- fake_sigreturn_kernelspace_sp +- fake_sigreturn_sve_bad_extra_context +- mangle_sve_invalid_extra_context +- mangle_pstate_invalid_el for H modes (+ macroization ?) +- fake_sigreturn_overflow_reserved diff --git a/tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_misaligned_sp.c b/tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_misaligned_sp.c new file mode 100644 index 000000000000..3ee8c500c7d1 --- /dev/null +++ b/tools/testing/selftests/arm64/signal/testcases/fake_sigreturn_misaligned_sp.c @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright (C) 2019 ARM Limited */ + +#include <ucontext.h> + +#include "test_signals_utils.h" +#include "testcases.h" + +struct fake_sigframe sf; + +static int fake_sigreturn_misaligned_run(struct tdescr *td, + siginfo_t *si, ucontext_t *uc) +{ + /* just to fill the ucontext_t with something real */ + if (!get_current_context(td, &sf.uc)) + return 1; + + /* Forcing sigframe on misaligned (=!16) SP */ + fake_sigreturn(&sf, sizeof(sf), 0); + + return 1; +} + +struct tdescr tde = { + .name = "FAKE_SIGRETURN_MISALIGNED_SP", + .descr = "Triggers a fake sigreturn with a misaligned sigframe on SP", + .sig_ok = SIGSEGV, + .timeout = 3, + .run = fake_sigreturn_misaligned_run, +}; -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-08-02 17:03 UTC|newest] Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-02 17:02 [PATCH v3 00/11] Add arm64/signal initial kselftest support Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 01/11] kselftest: arm64: introduce new boilerplate code Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:23 ` Dave Martin 2019-08-13 16:23 ` Dave Martin 2019-08-27 12:14 ` Cristian Marussi 2019-08-27 12:14 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 02/11] kselftest: arm64: adds first test and common utils Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-06 15:50 ` Cristian Marussi 2019-08-06 15:50 ` Cristian Marussi 2019-08-07 15:42 ` Cristian Marussi 2019-08-07 15:42 ` Cristian Marussi 2019-08-09 10:54 ` Cristian Marussi 2019-08-09 10:54 ` Cristian Marussi 2019-08-09 11:16 ` Dave Martin 2019-08-09 11:16 ` Dave Martin 2019-08-09 12:20 ` Cristian Marussi 2019-08-09 12:20 ` Cristian Marussi 2019-08-09 12:32 ` Dave Martin 2019-08-09 12:32 ` Dave Martin 2019-08-12 12:43 ` Amit Kachhap 2019-08-12 12:43 ` Amit Kachhap 2019-08-13 13:22 ` Cristian Marussi 2019-08-13 13:22 ` Cristian Marussi 2019-08-14 10:22 ` Amit Kachhap 2019-08-14 10:22 ` Amit Kachhap 2019-08-27 14:24 ` Cristian Marussi 2019-08-27 14:24 ` Cristian Marussi 2019-08-13 16:24 ` Dave Martin 2019-08-13 16:24 ` Dave Martin 2019-08-28 17:34 ` Cristian Marussi 2019-08-28 17:34 ` Cristian Marussi 2019-09-03 15:34 ` Dave Martin 2019-09-03 15:34 ` Dave Martin 2019-09-03 16:08 ` Cristian Marussi 2019-09-03 16:08 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 03/11] kselftest: arm64: mangle_pstate_invalid_daif_bits Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:24 ` Dave Martin 2019-08-13 16:24 ` Dave Martin 2019-08-29 10:19 ` Cristian Marussi 2019-08-29 10:19 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 04/11] kselftest: arm64: mangle_pstate_invalid_mode_el Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:24 ` Dave Martin 2019-08-13 16:24 ` Dave Martin 2019-08-29 11:50 ` Cristian Marussi 2019-08-29 11:50 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 05/11] kselftest: arm64: mangle_pstate_ssbs_regs Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:25 ` Dave Martin 2019-08-13 16:25 ` Dave Martin 2019-08-29 15:35 ` Cristian Marussi 2019-08-29 15:35 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 06/11] kselftest: arm64: fake_sigreturn_bad_magic Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:25 ` Dave Martin 2019-08-13 16:25 ` Dave Martin 2019-08-30 14:29 ` Cristian Marussi 2019-08-30 14:29 ` Cristian Marussi 2019-09-04 10:05 ` Dave Martin 2019-09-04 10:05 ` Dave Martin 2019-09-04 10:37 ` Cristian Marussi 2019-09-04 10:37 ` Cristian Marussi 2019-09-04 10:47 ` Dave Martin 2019-09-04 10:47 ` Dave Martin 2019-08-02 17:02 ` [PATCH v3 07/11] kselftest: arm64: fake_sigreturn_bad_size_for_magic0 Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:25 ` Dave Martin 2019-08-13 16:25 ` Dave Martin 2019-08-30 14:49 ` Cristian Marussi 2019-08-30 14:49 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 08/11] kselftest: arm64: fake_sigreturn_missing_fpsimd Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:26 ` Dave Martin 2019-08-13 16:26 ` Dave Martin 2019-08-30 14:55 ` Cristian Marussi 2019-08-30 14:55 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 09/11] kselftest: arm64: fake_sigreturn_duplicated_fpsimd Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:26 ` Dave Martin 2019-08-13 16:26 ` Dave Martin 2019-08-30 15:11 ` Cristian Marussi 2019-08-30 15:11 ` Cristian Marussi 2019-08-02 17:02 ` [PATCH v3 10/11] kselftest: arm64: fake_sigreturn_bad_size Cristian Marussi 2019-08-02 17:02 ` Cristian Marussi 2019-08-13 16:26 ` Dave Martin 2019-08-13 16:26 ` Dave Martin 2019-08-30 15:21 ` Cristian Marussi 2019-08-30 15:21 ` Cristian Marussi 2019-08-02 17:03 ` Cristian Marussi [this message] 2019-08-02 17:03 ` [PATCH v3 11/11] kselftest: arm64: fake_sigreturn_misaligned_sp Cristian Marussi 2019-08-07 16:04 ` Cristian Marussi 2019-08-07 16:04 ` Cristian Marussi 2019-08-13 16:28 ` Dave Martin 2019-08-13 16:28 ` Dave Martin 2019-08-30 15:22 ` Cristian Marussi 2019-08-30 15:22 ` Cristian Marussi 2019-08-13 16:27 ` Dave Martin 2019-08-13 16:27 ` Dave Martin 2019-08-30 16:33 ` Cristian Marussi 2019-08-30 16:33 ` Cristian Marussi 2019-08-13 16:22 ` [PATCH v3 00/11] Add arm64/signal initial kselftest support Dave Martin 2019-08-13 16:22 ` Dave Martin 2019-08-30 16:40 ` Cristian Marussi 2019-08-30 16:40 ` Cristian Marussi 2019-09-02 10:53 ` Dave Martin 2019-09-02 10:53 ` Dave Martin 2019-09-02 11:30 ` Cristian Marussi 2019-09-02 11:30 ` Cristian Marussi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190802170300.20662-12-cristian.marussi@arm.com \ --to=cristian.marussi@arm.com \ --cc=andreyknvl@google.com \ --cc=dave.martin@arm.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kselftest@vger.kernel.org \ --cc=shuah@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.