mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 14:04:54 +02:00
arm64/sme: Always exit sme_alloc() early with existing storage
commitdc7eb87557upstream. When sme_alloc() is called with existing storage and we are not flushing we will always allocate new storage, both leaking the existing storage and corrupting the state. Fix this by separating the checks for flushing and for existing storage as we do for SVE. Callers that reallocate (eg, due to changing the vector length) should call sme_free() themselves. Fixes:5d0a8d2fba("arm64/ptrace: Ensure that SME is set up for target when writing SSVE state") Signed-off-by: Mark Brown <broonie@kernel.org> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20240115-arm64-sme-flush-v1-1-7472bd3459b7@kernel.org Signed-off-by: Will Deacon <will@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
f5da59f2bb
commit
569156e4fa
|
|
@ -1280,8 +1280,10 @@ void fpsimd_release_task(struct task_struct *dead_task)
|
|||
*/
|
||||
void sme_alloc(struct task_struct *task, bool flush)
|
||||
{
|
||||
if (task->thread.sme_state && flush) {
|
||||
memset(task->thread.sme_state, 0, sme_state_size(task));
|
||||
if (task->thread.sme_state) {
|
||||
if (flush)
|
||||
memset(task->thread.sme_state, 0,
|
||||
sme_state_size(task));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user