Re: [patch] i386: remove IOPL check on task switch

Zachary Amsden
2006-11-04T19:39:10Z

Zachary Amsden wrote:
> Chuck Ebbert wrote:
>> In-Reply-To: <454B850C.3050402@vmware.com>
>>
>> On Fri, 03 Nov 2006 10:06:04 -0800, Zachary Amsden wrote:
>>
>>
>>> Chuck Ebbert wrote:
>>>
>>>> IOPL is implicitly saved and restored on task switch,
>>>> so explicit check is no longer needed.
>>>>
>>> Nack. This is used for paravirt-ops kernels that use IOPL'd
>>> userspace.
>>
>> How does that work? In the stock kernel, anything done by
>> the call to set_iopl_mask() (that was removed by the patch)
>> will be nullified by the 'popfl' at the end of the switch_to()
>> macro.
>>
>
> Who put a popfl back in switch_to? I took it out some time ago. It
> should not be there. The only reason for it was to stop IOPL leaking
> from one process to another from a sleep during a sysenter based
> system call.

Ok, checking shows Linus put it back to stop NT leakage. This is
correct, but unlikely. Would be nice to avoid it unless absolutely
necessary. Perhaps xor eflags old and new and only set_system_eflags()
if non-ALU bits have changed.

Zach