Re: [PATCH v3] x86/fault: Send a SIGBUS to user process always for hwpoison page access.

From: Andy Lutomirski
Date: Mon Mar 08 2021 - 14:01:10 EST




> On Mar 8, 2021, at 10:31 AM, Luck, Tony <tony.luck@xxxxxxxxx> wrote:
>
> 
>>
>> Can you point me at that SIGBUS code in a current kernel?
>
> It is in kill_me_maybe(). mce_vaddr is setup when we disassemble whatever get_user()
> or copy from user variant was in use in the kernel when the poison memory was consumed.
>
> if (p->mce_vaddr != (void __user *)-1l) {
> force_sig_mceerr(BUS_MCEERR_AR, p->mce_vaddr, PAGE_SHIFT);

Hmm. On the one hand, no one has complained yet. On the other hand, hardware that supports this isn’t exactly common.

We may need some actual ABI design here. We also need to make sure that things like io_uring accesses or, more generally, anything using the use_mm / use_temporary_mm ends up either sending no signal or sending a signal to the right target.

>
> Would it be any better if we used the BUS_MCEERR_AO code that goes into siginfo?

Dunno.

>
> That would make it match up better with what happens when poison is found
> asynchronously by the patrol scrubber. I.e. the semantics are:
>
> AR: You just touched poison at this address and need to do something about that.
> AO: Just letting you know that you have some poison at the address in siginfo.
>
> -Tony