----- On May 14, 2020, at 1:38 PM, Thomas Gleixner [email protected] wrote:
> Mathieu Desnoyers <[email protected]> writes: >> ----- On May 5, 2020, at 9:16 AM, Thomas Gleixner [email protected] wrote: >> >>> From: Peter Zijlstra <[email protected]> >>> >> >> Patch title: singal -> signal. >> >>> Convert #MC over to using task_work_add(); it will run the same code >>> slightly later, on the return to user path of the same exception. >> >> So I suspect that switching the order between tracehook_notify_resume() >> (which ends up calling task_work_run()) and do_signal() done by an >> earlier patch in this series intends to ensure the information about the >> instruction pointer causing the #MC is not overwritten by do_signal() >> (but I'm just guessing). > > No, it does not. See the ordering discussion. > > Aside of that signal never transported any address information. It uses > force_sig(SIGBUS). > > Even if a different signal would be sent first then the register frame > of the #MC is still there when the fatal signal is sent later. > > But even w/o changing the ordering the taskwork check in do_signal() > runs the pending work before delivering anything. Yep, that was the key thing I missed, Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com

