mirror-linux/arch
Mark Brown 21614ba608 arm64/ptrace: Ensure that SME is set up for target when writing SSVE state
commit 5d0a8d2fba upstream.

When we use NT_ARM_SSVE to either enable streaming mode or change the
vector length for a process we do not currently do anything to ensure that
there is storage allocated for the SME specific register state.  If the
task had not previously used SME or we changed the vector length then
the task will not have had TIF_SME set or backing storage for ZA/ZT
allocated, resulting in inconsistent register sizes when saving state
and spurious traps which flush the newly set register state.

We should set TIF_SME to disable traps and ensure that storage is
allocated for ZA and ZT if it is not already allocated.  This requires
modifying sme_alloc() to make the flush of any existing register state
optional so we don't disturb existing state for ZA and ZT.

Fixes: e12310a0d3 ("arm64/sme: Implement ptrace support for streaming mode SVE registers")
Reported-by: David Spickett <David.Spickett@arm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: <stable@vger.kernel.org> # 5.19.x
Link: https://lore.kernel.org/r/20230810-arm64-fix-ptrace-race-v1-1-a5361fad2bd6@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-08-23 17:52:41 +02:00
..
alpha alpha: remove __init annotation from exported page_is_ram() 2023-08-16 18:27:31 +02:00
arc ARC: define ASM_NL and __ALIGN(_STR) outside #ifdef __ASSEMBLY__ guard 2023-07-19 16:21:42 +02:00
arm ARM: dts: imx: Set default tuning step for imx6sx usdhc 2023-08-23 17:52:37 +02:00
arm64 arm64/ptrace: Ensure that SME is set up for target when writing SSVE state 2023-08-23 17:52:41 +02:00
csky csky: fix up lock_mm_and_find_vma() conversion 2023-07-01 13:16:27 +02:00
hexagon mm/fault: convert remaining simple cases to lock_mm_and_find_vma() 2023-07-01 13:16:25 +02:00
ia64 ia64/cpu: Switch to arch_cpu_finalize_init() 2023-08-08 20:03:46 +02:00
loongarch Revert "loongarch/cpu: Switch to arch_cpu_finalize_init()" 2023-08-16 18:27:20 +02:00
m68k m68k/cpu: Switch to arch_cpu_finalize_init() 2023-08-08 20:03:46 +02:00
microblaze mm: always expand the stack with the mmap write lock held 2023-07-01 13:16:25 +02:00
mips mips/cpu: Switch to arch_cpu_finalize_init() 2023-08-08 20:03:47 +02:00
nios2 mm/fault: convert remaining simple cases to lock_mm_and_find_vma() 2023-07-01 13:16:25 +02:00
openrisc mm: always expand the stack with the mmap write lock held 2023-07-01 13:16:25 +02:00
parisc init: Remove check_bugs() leftovers 2023-08-08 20:03:47 +02:00
powerpc powerpc/rtas_flash: allow user copy to flash block cache objects 2023-08-23 17:52:30 +02:00
riscv riscv: uaccess: Return the number of bytes effectively not copied 2023-08-23 17:52:38 +02:00
s390 KVM: s390: fix sthyi error handling 2023-08-11 12:08:11 +02:00
sh sh/cpu: Switch to arch_cpu_finalize_init() 2023-08-08 20:03:47 +02:00
sparc sparc/cpu: Switch to arch_cpu_finalize_init() 2023-08-08 20:03:47 +02:00
um um/cpu: Switch to arch_cpu_finalize_init() 2023-08-08 20:03:47 +02:00
x86 x86: Move gds_ucode_mitigated() declaration to header 2023-08-16 18:27:25 +02:00
xtensa init: Remove check_bugs() leftovers 2023-08-08 20:03:47 +02:00
.gitignore
Kconfig init: Provide arch_cpu_finalize_init() 2023-08-08 20:03:46 +02:00