Messages in this thread | | | Subject | Re: [v6 PATCH 00/21] x86: Enable User-Mode Instruction Prevention | From | Stas Sergeev <> | Date | Wed, 8 Mar 2017 19:29:31 +0300 |
| |
08.03.2017 19:06, Andy Lutomirski пишет: > On Wed, Mar 8, 2017 at 6:08 AM, Stas Sergeev <stsp@list.ru> wrote: >> 08.03.2017 03:32, Ricardo Neri пишет: >>> These are the instructions covered by UMIP: >>> * SGDT - Store Global Descriptor Table >>> * SIDT - Store Interrupt Descriptor Table >>> * SLDT - Store Local Descriptor Table >>> * SMSW - Store Machine Status Word >>> * STR - Store Task Register >>> >>> This patchset initially treated tasks running in virtual-8086 mode as a >>> special case. However, I received clarification that DOSEMU[8] does not >>> support applications that use these instructions. > Can you remind me what was special about it? It looks like you still > emulate them in v8086 mode. Indeed, sorry, I meant prot mode here. :) So I wonder what was cited to be special about v86.
>> Yes, this is the case. >> But at least in the past there was an attempt to >> support SLDT as it is used by an ancient pharlap >> DOS extender (currently unsupported by dosemu1/2). >> So how difficult would it be to add an optional >> possibility of delivering such SIGSEGV to userspace >> so that the kernel's dummy emulation can be overridden? >> It doesn't need to be a matter of this particular >> patch set, i.e. this proposal should not trigger a >> v7 resend of all 21 patches. :) But it would be useful >> for the future development of dosemu2. > What I'd actually like to see is a totally separate patchset that adds > an inheritable (but reset on exec) per-task mask of legacy > compatibility features to disable. Maybe: > > sys_adjust_compat_mask(int op, int word, u32 mask); No no, since I meant prot mode, this is not what I need. I would never need to disable UMIP as to allow the prot mode apps to do SLDT. Instead it would be good to have an ability to provide a replacement for the dummy emulation that is currently being proposed for kernel. All is needed for this, is just to deliver a SIGSEGV.
| |