powerpc/ptrace: Consolidate reg index calculation
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Tue, 18 Aug 2020 17:19:15 +0000 (17:19 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 3 Dec 2020 14:01:11 +0000 (01:01 +1100)
Today we have:

#ifdef CONFIG_PPC32
index = addr >> 2;
if ((addr & 3) || child->thread.regs == NULL)
#else
index = addr >> 3;
if ((addr & 7))
#endif

sizeof(long) has value 4 for PPC32 and value 8 for PPC64.

Dividing by 4 is equivalent to >> 2 and dividing by 8 is equivalent
to >> 3.

And 3 and 7 are respectively (sizeof(long) - 1).

Use sizeof(long) to get rid of the #ifdef CONFIG_PPC32 and consolidate
the calculation and checking.

thread.regs have to be not NULL on both PPC32 and PPC64 so adding
that test on PPC64 is harmless.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/3cd1e284e93c60db981659585e18d1f6bb73ed2f.1597770847.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/ptrace/ptrace.c

index f6e51be..51557a9 100644 (file)
@@ -55,14 +55,9 @@ long arch_ptrace(struct task_struct *child, long request,
 
                ret = -EIO;
                /* convert to index and check */
-#ifdef CONFIG_PPC32
-               index = addr >> 2;
-               if ((addr & 3) || (index > PT_FPSCR)
+               index = addr / sizeof(long);
+               if ((addr & (sizeof(long) - 1)) || (index > PT_FPSCR)
                    || (child->thread.regs == NULL))
-#else
-               index = addr >> 3;
-               if ((addr & 7) || (index > PT_FPSCR))
-#endif
                        break;
 
                CHECK_FULL_REGS(child->thread.regs);
@@ -90,14 +85,9 @@ long arch_ptrace(struct task_struct *child, long request,
 
                ret = -EIO;
                /* convert to index and check */
-#ifdef CONFIG_PPC32
-               index = addr >> 2;
-               if ((addr & 3) || (index > PT_FPSCR)
+               index = addr / sizeof(long);
+               if ((addr & (sizeof(long) - 1)) || (index > PT_FPSCR)
                    || (child->thread.regs == NULL))
-#else
-               index = addr >> 3;
-               if ((addr & 7) || (index > PT_FPSCR))
-#endif
                        break;
 
                CHECK_FULL_REGS(child->thread.regs);