[RFC v7 24/25] powerpc: Deliver SEGV signal on pkey violation
Michael Ellerman
mpe at ellerman.id.au
Fri Aug 11 20:26:30 AEST 2017
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.
>> --- 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?
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. ??
cheers
More information about the Linuxppc-dev
mailing list