Re: [v2 5/7] x86: Add emulation code for UMIP instructions

From: Andy Lutomirski
Date: Fri Dec 30 2016 - 21:08:30 EST


On Thu, Dec 29, 2016 at 9:23 PM, Ricardo Neri
<ricardo.neri-calderon@xxxxxxxxxxxxxxx> wrote:
> On Tue, 2016-12-27 at 16:48 -0800, Andy Lutomirski wrote:
>>
>> >> > + if (nr_copied > 0)
>> >> > + return -EFAULT;
>> >>
>> >> This should be the only EFAULT case.
>> > Should this be EFAULT event if the caller cares only about successful
>> > (return 0) vs failed (return non-0) emulation?
>>
>> In theory this particular error would be a page fault not a general
>> protection fault (in the UMIP off case). If you were emulating it
>> extra carefully, you could change the signal accordingly. But, as I
>> said, I really doubt this matters.
>
> If simple enough and for the sake of accuracy, I could try to issue the
> page fault. It seems to me that this entitles calling
> force_sig_info_fault in this particular case as opposed to the
> force_sig_info(SIGSEGV, SEND_SIG_PRIV, tsk) that do_general_protection
> calls.

Sure. You could even do it by sending the signal in the emulation
code and returning true.

--Andy