Clearing target's TIF_SVE but not current's TIF_SME in za_set(), as it indicates
target's SVE storage unavailable.
Fixes: 776b4a1cf364 ("arm64/sme: Add ptrace support for ZA")
Signed-off-by: Wang ShaoBo <[email protected]>
---
arch/arm64/kernel/ptrace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index 21da83187a60..66d5c7efb745 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -1084,7 +1084,7 @@ static int za_set(struct task_struct *target,
if (!target->thread.sve_state) {
sve_alloc(target);
if (!target->thread.sve_state) {
- clear_thread_flag(TIF_SME);
+ clear_tsk_thread_flag(target, TIF_SVE);
ret = -ENOMEM;
goto out;
}
--
2.25.1
On Tue, Aug 23, 2022 at 09:56:27AM +0800, Wang ShaoBo wrote:
> Clearing target's TIF_SVE but not current's TIF_SME in za_set(), as it indicates
> target's SVE storage unavailable.
> +++ b/arch/arm64/kernel/ptrace.c
> @@ -1084,7 +1084,7 @@ static int za_set(struct task_struct *target,
> if (!target->thread.sve_state) {
> sve_alloc(target);
> if (!target->thread.sve_state) {
> - clear_thread_flag(TIF_SME);
> + clear_tsk_thread_flag(target, TIF_SVE);
> ret = -ENOMEM;
> goto out;
> }
We didn't set TIF_SVE so we have no reason to clear it here, we know it
can't have been set since there was no sve_state allocated. The clear
of TIF_SME is happening on the wrong task though, and TBH is just
redudnant for similar reasons.