arm64/signal: Alloc tpidr2 sigframe after checking system_supports_tpidr2()
authorDongxu Sun <sundongxu3@huawei.com>
Fri, 17 Mar 2023 12:49:13 +0000 (20:49 +0800)
committerWill Deacon <will@kernel.org>
Wed, 12 Apr 2023 08:41:48 +0000 (09:41 +0100)
Move tpidr2 sigframe allocation from under the checking of
system_supports_sme() to the checking of system_supports_tpidr2().

Signed-off-by: Dongxu Sun <sundongxu3@huawei.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20230317124915.1263-3-sundongxu3@huawei.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/kernel/signal.c

index 032e97f..2cfc810 100644 (file)
@@ -893,6 +893,13 @@ static int setup_sigframe_layout(struct rt_sigframe_user_layout *user,
                        return err;
        }
 
+       if (system_supports_tpidr2()) {
+               err = sigframe_alloc(user, &user->tpidr2_offset,
+                                    sizeof(struct tpidr2_context));
+               if (err)
+                       return err;
+       }
+
        if (system_supports_sme()) {
                unsigned int vl;
                unsigned int vq = 0;
@@ -902,11 +909,6 @@ static int setup_sigframe_layout(struct rt_sigframe_user_layout *user,
                else
                        vl = task_get_sme_vl(current);
 
-               err = sigframe_alloc(user, &user->tpidr2_offset,
-                                    sizeof(struct tpidr2_context));
-               if (err)
-                       return err;
-
                if (thread_za_enabled(&current->thread))
                        vq = sve_vq_from_vl(vl);