Re: [PATCH v21 06/26] x86/cet: Add control-protection fault handler

From: Yu, Yu-cheng
Date: Wed Feb 24 2021 - 14:53:40 EST


On 2/24/2021 11:42 AM, Borislav Petkov wrote:
On Wed, Feb 24, 2021 at 11:30:34AM -0800, Andy Lutomirski wrote:
On Wed, Feb 24, 2021 at 11:20 AM Borislav Petkov <bp@xxxxxxxxx> wrote:

On Wed, Feb 24, 2021 at 09:56:13AM -0800, Yu, Yu-cheng wrote:
No. Maybe I am doing too much. The GP fault sets si_addr to zero, for
example. So maybe do the same here?

No, you're looking at this from the wrong angle. This is going to be
user-visible and the moment it gets upstream, it is cast in stone.

So the whole use case of what luserspace needs to do or is going to do
or wants to do on a SEGV_CPERR, needs to be described, agreed upon by
people etc before it goes out. And thus clarified whether the address
gets copied out or not.

I vote 0. The address is in ucontext->gregs[REG_RIP] [0] regardless.
Why do we need to stick a copy somewhere else?

[0] or however it's spelled. i can never remember.

Fine with me. Let's have this documented in the manpage and then we can
move forward with this.

Thx.


The man page at https://man7.org/linux/man-pages/man2/sigaction.2.html says,

SIGILL, SIGFPE, SIGSEGV, SIGBUS, and SIGTRAP fill in si_addr with the address of the fault.

But it is not entirely true.

I will send a patch to update it, and another patch for the si_code.

--
Yu-cheng