BACKPORT: arm64/ptrace: Don't enable SVE when setting streaming SVE
Systems which implement SME without also implementing SVE are architecturally valid but were not initially supported by the kernel, unfortunately we missed one issue in the ptrace code. The SVE register setting code is shared between SVE and streaming mode SVE. When we set full SVE register state we currently enable TIF_SVE unconditionally, in the case where streaming SVE is being configured on a system that supports vanilla SVE this is not an issue since we always initialise enough state for both vector lengths but on a system which only support SME it will result in us attempting to restore the SVE vector length after having set streaming SVE registers. Fix this by making the enabling of SVE conditional on setting SVE vector state. If we set streaming SVE state and SVE was not already enabled this will result in a SVE access trap on next use of normal SVE, this will cause us to flush our register state but this is fine since the only way to trigger a SVE access trap would be to exit streaming mode which will cause the in register state to be flushed anyway. Bug: 254441685 Fixes: e12310a0 ("arm64/sme: Implement ptrace support for streaming mode SVE registers") Signed-off-by:Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20230803-arm64-fix-ptrace-ssve-no-sve-v1-1-49df214bfb3e@kernel.org Signed-off-by:
Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit 045aecdf) [Lee: Surrounding code was causing a conflict - resolution didn't change any of the diff] Signed-off-by:
Lee Jones <joneslee@google.com> Change-Id: Ibdf922ee25ce3ff984970776af9d6a868efa26d9
Loading
Please sign in to comment