ARM: kernel: Get rid of thread_info::used_cp[] array
authorArd Biesheuvel <ardb@kernel.org>
Sun, 19 Mar 2023 22:55:14 +0000 (23:55 +0100)
committerArd Biesheuvel <ardb@kernel.org>
Wed, 17 May 2023 13:08:22 +0000 (15:08 +0200)
We keep track of which coprocessor triggered a fault in the used_cp[]
array in thread_info, but this data is never used anywhere. So let's
remove it.

Linus did some digging and found out that the last user of this field
was removed in commit bb1a773d5b6b ("kill unused dump_fpu() instances").

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
arch/arm/include/asm/thread_info.h
arch/arm/kernel/asm-offsets.c
arch/arm/kernel/entry-armv.S
arch/arm/kernel/process.c
arch/arm/kernel/ptrace.c

index 7f092cb..85c5f1e 100644 (file)
@@ -66,7 +66,6 @@ struct thread_info {
        __u32                   cpu_domain;     /* cpu domain */
        struct cpu_context_save cpu_context;    /* cpu context */
        __u32                   abi_syscall;    /* ABI type and syscall nr */
-       __u8                    used_cp[16];    /* thread used copro */
        unsigned long           tp_value[2];    /* TLS registers */
        union fp_state          fpstate __attribute__((aligned(8)));
        union vfp_state         vfpstate;
index 38121c5..f9c7111 100644 (file)
@@ -47,7 +47,6 @@ int main(void)
   DEFINE(TI_CPU_DOMAIN,                offsetof(struct thread_info, cpu_domain));
   DEFINE(TI_CPU_SAVE,          offsetof(struct thread_info, cpu_context));
   DEFINE(TI_ABI_SYSCALL,       offsetof(struct thread_info, abi_syscall));
-  DEFINE(TI_USED_CP,           offsetof(struct thread_info, used_cp));
   DEFINE(TI_TP_VALUE,          offsetof(struct thread_info, tp_value));
   DEFINE(TI_FPSTATE,           offsetof(struct thread_info, fpstate));
 #ifdef CONFIG_VFP
index c39303e..ba47f6a 100644 (file)
@@ -591,9 +591,6 @@ call_fpe:
        and     r8, r0, r5
        cmp     r8, r7                          @ NEON instruction?
        bne     2b
-       mov     r7, #1
-       strb    r7, [r10, #TI_USED_CP + 10]     @ mark CP#10 as used
-       strb    r7, [r10, #TI_USED_CP + 11]     @ mark CP#11 as used
        b       do_vfp                          @ let VFP handler handle this
 1:
 #endif
@@ -601,9 +598,6 @@ call_fpe:
        tstne   r0, #0x04000000                 @ bit 26 set on both ARM and Thumb-2
        reteq   lr
        and     r8, r0, #0x00000f00             @ mask out CP number
-       mov     r7, #1
-       add     r6, r10, r8, lsr #8             @ add used_cp[] array offset first
-       strb    r7, [r6, #TI_USED_CP]           @ set appropriate used_cp[]
 #ifdef CONFIG_IWMMXT
        @ Test if we need to give access to iWMMXt coprocessors
        ldr     r5, [r10, #TI_FLAGS]
index 0e8ff85..e16ed10 100644 (file)
@@ -222,7 +222,6 @@ void flush_thread(void)
 
        flush_ptrace_hw_breakpoint(tsk);
 
-       memset(thread->used_cp, 0, sizeof(thread->used_cp));
        memset(&tsk->thread.debug, 0, sizeof(struct debug_info));
        memset(&thread->fpstate, 0, sizeof(union fp_state));
 
index 2d8e251..2b945b9 100644 (file)
@@ -584,8 +584,6 @@ static int fpa_set(struct task_struct *target,
 {
        struct thread_info *thread = task_thread_info(target);
 
-       thread->used_cp[1] = thread->used_cp[2] = 1;
-
        return user_regset_copyin(&pos, &count, &kbuf, &ubuf,
                &thread->fpstate,
                0, sizeof(struct user_fp));