mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 17:59:32 +00:00
arm64/sme: Disable ZA and streaming mode when handling signals
The ABI requires that streaming mode and ZA are disabled when invoking signal handlers, do this in setup_return() when we prepare the task state for the signal handler. Signed-off-by: Mark Brown <broonie@kernel.org> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Link: https://lore.kernel.org/r/20220419112247.711548-18-broonie@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
8bd7f91c03
commit
40a8e87bb3
1 changed files with 7 additions and 0 deletions
|
@ -759,6 +759,13 @@ static void setup_return(struct pt_regs *regs, struct k_sigaction *ka,
|
||||||
/* TCO (Tag Check Override) always cleared for signal handlers */
|
/* TCO (Tag Check Override) always cleared for signal handlers */
|
||||||
regs->pstate &= ~PSR_TCO_BIT;
|
regs->pstate &= ~PSR_TCO_BIT;
|
||||||
|
|
||||||
|
/* Signal handlers are invoked with ZA and streaming mode disabled */
|
||||||
|
if (system_supports_sme()) {
|
||||||
|
current->thread.svcr &= ~(SYS_SVCR_EL0_ZA_MASK |
|
||||||
|
SYS_SVCR_EL0_SM_MASK);
|
||||||
|
sme_smstop();
|
||||||
|
}
|
||||||
|
|
||||||
if (ka->sa.sa_flags & SA_RESTORER)
|
if (ka->sa.sa_flags & SA_RESTORER)
|
||||||
sigtramp = ka->sa.sa_restorer;
|
sigtramp = ka->sa.sa_restorer;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue