[PATCH] arm64/sme: Clearing TIF_SVE but not TIF_SME in za_set()

Wang ShaoBo posted 1 patch 3 years, 7 months ago
arch/arm64/kernel/ptrace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] arm64/sme: Clearing TIF_SVE but not TIF_SME in za_set()
Posted by Wang ShaoBo 3 years, 7 months ago
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 <bobo.shaobowang@huawei.com>
---
 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
Re: [PATCH] arm64/sme: Clearing TIF_SVE but not TIF_SME in za_set()
Posted by Mark Brown 3 years, 7 months ago
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.