[RFC v7 24/25] powerpc: Deliver SEGV signal on pkey violation
Ram Pai
linuxram at us.ibm.com
Fri Aug 18 03:14:08 AEST 2017
On Fri, Aug 11, 2017 at 08:26:30PM +1000, Michael Ellerman wrote:
> Thiago Jung Bauermann <bauerman at linux.vnet.ibm.com> writes:
>
> > Ram Pai <linuxram at us.ibm.com> writes:
> >
> >> The value of the AMR register at the time of exception
> >> is made available in gp_regs[PT_AMR] of the siginfo.
> >>
> >> The value of the pkey, whose protection got violated,
> >> is made available in si_pkey field of the siginfo structure.
> >
> > Should the IAMR also be made available?
> >
> > Also, should the AMR and IAMR be accesible to userspace (e.g., to GDB)
> > via ptrace and the core file?
>
> Yes if they're part of the thread's context they should be accessible
> via ptrace and in core files.
ok. Some more code needed. :(
>
> >> --- a/arch/powerpc/kernel/signal_32.c
> >> +++ b/arch/powerpc/kernel/signal_32.c
> >> @@ -500,6 +500,11 @@ static int save_user_regs(struct pt_regs *regs, struct mcontext __user *frame,
> >> (unsigned long) &frame->tramp[2]);
> >> }
> >>
> >> +#ifdef CONFIG_PPC64_MEMORY_PROTECTION_KEYS
> >> + if (__put_user(get_paca()->paca_amr, &frame->mc_gregs[PT_AMR]))
> >> + return 1;
> >> +#endif /* CONFIG_PPC64_MEMORY_PROTECTION_KEYS */
> >> +
> >> return 0;
> >> }
> >
> > frame->mc_gregs[PT_AMR] has 32 bits, but paca_amr has 64 bits. Does this
> > work as intended?
hmm..i think we should just disable pkey support for 32 bit apps, till
we figure out all the edge cases.
>
> I don't understand why we are putting it in there at all?
>
> Is there some special handling of the actual register on signals? I
> haven't seen it. In which case the process can get the value of AMR by
> reading the register. ??
The value of AMR register at the time of the key-exception may not be
the same when the signal handler is invoked.
RP
More information about the Linuxppc-dev
mailing list