From: Marc Zyngier <maz@kernel.org>
To: D Scott Phillips <scott@os.amperecomputing.com>
Cc: linux-arm-kernel@lists.infradead.org,
Will Deacon <will@kernel.org>,
Darren Hart <darren@os.amperecomputing.com>,
patches@amperecomputing.com
Subject: Re: [PATCH v2] arm64: errata: Fix exec handling in erratum 1418040 workaround
Date: Thu, 16 Dec 2021 19:52:44 +0000 [thread overview]
Message-ID: <af861c0865797d5f38005f7b77ea08e4@kernel.org> (raw)
In-Reply-To: <20211216191618.972956-1-scott@os.amperecomputing.com>
On 2021-12-16 19:16, D Scott Phillips wrote:
> The erratum 1418040 workaround changes vct access trapping when
> switching
> between compat and non-compat threads. The workaround logic assumes
> that
> the hardware vct trapping state matches the previous task's
> compat-ness.
> However, when a non-compat task execs a compat binary or vice versa,
> the
> cntkctl state and task compat-ness get out of sync. Keep the hardware
> trapping state in sync with the task personality.
>
> Fixes: d49f7d7376d0 ("arm64: Move handling of erratum 1418040 into C
> code")
> Signed-off-by: D Scott Phillips <scott@os.amperecomputing.com>
> Reviewed-by: Marc Zyngier <maz@kernel.org>
> Cc: <stable@vger.kernel.org> # 5.4.x
> ---
>
> v2: - Use sysreg_clear_set instead of open coding (Marc)
> - guard this_cpu_has_cap() check under IS_ENABLED() to avoid tons
> of
> WARN_ON(preemptible()) when built with
> !CONFIG_ARM64_ERRATUM_1418040
Indeed.
> arch/arm64/include/asm/elf.h | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/arch/arm64/include/asm/elf.h
> b/arch/arm64/include/asm/elf.h
> index 97932fbf973d..24036b914226 100644
> --- a/arch/arm64/include/asm/elf.h
> +++ b/arch/arm64/include/asm/elf.h
> @@ -160,8 +160,16 @@ typedef struct user_fpsimd_state elf_fpregset_t;
>
> #define SET_PERSONALITY(ex) \
> ({ \
> + if (IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040)) \
> + preempt_disable(); \
> clear_thread_flag(TIF_32BIT); \
> current->personality &= ~READ_IMPLIES_EXEC; \
> + if (IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040)) { \
> + if (this_cpu_has_cap(ARM64_WORKAROUND_1418040)) \
Probably better written as:
if (IS_ENABLED(CONFIG_ARM64_ERRATUM_1418040) &&
this_cpu_has_cap(ARM64_WORKAROUND_1418040))
sysreg_clear_set(...);
Thanks,
M.
--
Jazz is not dead. It just smells funny...
_______________________________________________
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:[~2021-12-16 19:54 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-16 19:16 [PATCH v2] arm64: errata: Fix exec handling in erratum 1418040 workaround D Scott Phillips
2021-12-16 19:52 ` Marc Zyngier [this message]
2021-12-17 14:41 ` Catalin Marinas
2021-12-17 16:42 ` D Scott Phillips
2021-12-17 18:38 ` Catalin Marinas
2021-12-17 19:29 ` D Scott Phillips
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=af861c0865797d5f38005f7b77ea08e4@kernel.org \
--to=maz@kernel.org \
--cc=darren@os.amperecomputing.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=patches@amperecomputing.com \
--cc=scott@os.amperecomputing.com \
--cc=will@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: link
Be 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.