Commit e009fa43 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc/ptrace: Consolidate reg index calculation

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: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/3cd1e284e93c60db981659585e18d1f6bb73ed2f.1597770847.git.christophe.leroy@csgroup.eu
parent 67e364b3
...@@ -55,14 +55,9 @@ long arch_ptrace(struct task_struct *child, long request, ...@@ -55,14 +55,9 @@ long arch_ptrace(struct task_struct *child, long request,
ret = -EIO; ret = -EIO;
/* convert to index and check */ /* convert to index and check */
#ifdef CONFIG_PPC32 index = addr / sizeof(long);
index = addr >> 2; if ((addr & (sizeof(long) - 1)) || (index > PT_FPSCR)
if ((addr & 3) || (index > PT_FPSCR)
|| (child->thread.regs == NULL)) || (child->thread.regs == NULL))
#else
index = addr >> 3;
if ((addr & 7) || (index > PT_FPSCR))
#endif
break; break;
CHECK_FULL_REGS(child->thread.regs); CHECK_FULL_REGS(child->thread.regs);
...@@ -90,14 +85,9 @@ long arch_ptrace(struct task_struct *child, long request, ...@@ -90,14 +85,9 @@ long arch_ptrace(struct task_struct *child, long request,
ret = -EIO; ret = -EIO;
/* convert to index and check */ /* convert to index and check */
#ifdef CONFIG_PPC32 index = addr / sizeof(long);
index = addr >> 2; if ((addr & (sizeof(long) - 1)) || (index > PT_FPSCR)
if ((addr & 3) || (index > PT_FPSCR)
|| (child->thread.regs == NULL)) || (child->thread.regs == NULL))
#else
index = addr >> 3;
if ((addr & 7) || (index > PT_FPSCR))
#endif
break; break;
CHECK_FULL_REGS(child->thread.regs); CHECK_FULL_REGS(child->thread.regs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment