Messages in this thread | | | Date | Sat, 18 Sep 2004 20:45:33 +0400 | From | Stas Sergeev <> | Subject | Re: ESP corruption bug - what CPUs are affected? |
| |
Hi Petr.
Petr Vandrovec wrote: > natural solution seems to be to create complete 16bit CPL1 > environment, return to it, load ESP as you want, and then do IRET > to return to CPL2 or CPL3. Fortunately V8086 mode is not affected, > so there should be no problem with using CPL1 for this middle step. > But of course it is not something you want to do on each return > from interrupt handler... Well, or maybe you want... Actually, this may indeed be what I want! I think this can be implemented with the checks that Denis Vlasenko suggests. Something like this can be added to entry.S, right before the "iret": --- if (!(old_EFLAGS & VM_MASK) && (descr_old_SS is 16bit one)) push_a_stack_frame_to_return_to_the_ring1_trampoline(); --- This way the overhead for the normal case would be something about 4 asm insns (the check), and for the dosemu case - who cares? (and probably also the wine people will value that)
Does this look reasonable? If it does, I think I should just start implementing that.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |