We will remove thread.amr/iamr/uamor in a later patch Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@linux.ibm.com> --- arch/powerpc/kernel/ptrace/ptrace-view.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/kernel/ptrace/ptrace-view.c b/arch/powerpc/kernel/ptrace/ptrace-view.c index caeb5822a8f4..878764d0ee4c 100644 --- a/arch/powerpc/kernel/ptrace/ptrace-view.c +++ b/arch/powerpc/kernel/ptrace/ptrace-view.c @@ -488,14 +488,25 @@ static int pkey_active(struct task_struct *target, const struct user_regset *reg static int pkey_get(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, void *kbuf, void __user *ubuf) { - BUILD_BUG_ON(TSO(amr) + sizeof(unsigned long) != TSO(iamr)); - BUILD_BUG_ON(TSO(iamr) + sizeof(unsigned long) != TSO(uamor)); + int ret; if (!arch_pkeys_enabled()) return -ENODEV; - return user_regset_copyout(&pos, &count, &kbuf, &ubuf, &target->thread.amr, - 0, ELF_NPKEY * sizeof(unsigned long)); + ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, &target->thread.regs->kuap, + 0, 1 * sizeof(unsigned long)); + if (ret) + goto err_out; + + ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, &target->thread.regs->kuep, + 1 * sizeof(unsigned long), 2 * sizeof(unsigned long)); + if (ret) + goto err_out; + + ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, &default_uamor, + 2 * sizeof(unsigned long), 3 * sizeof(unsigned long)); +err_out: + return ret; } static int pkey_set(struct task_struct *target, const struct user_regset *regset, @@ -518,8 +529,8 @@ static int pkey_set(struct task_struct *target, const struct user_regset *regset return ret; /* UAMOR determines which bits of the AMR can be set from userspace. */ - target->thread.amr = (new_amr & target->thread.uamor) | - (target->thread.amr & ~target->thread.uamor); + target->thread.regs->kuap = (new_amr & default_uamor) | + (target->thread.regs->kuap & ~default_uamor); return 0; } -- 2.26.2