On Wed, Jan 16, 2002 at 07:53:16PM +0000, John Levon wrote: > On Wed, Jan 16, 2002 at 04:32:59PM +0100, Erik Mouw wrote: > > > > OK, I was gonna say 'I dunno' but, looking closer at it, it looks like it > > > handles the cases where we were called from an invalid ds or es, or if we can't > > > iret (bad cs/esp/ss/eip/whatever). In the first 2, it just writes 0 to them, in > > > the last case, it kills the process. > > yep. but what I don't understand is why. Remember these values were saved on to the stack > using SAVE_ALL during the entry point. So when did they become bad ? > > eip would make perfect sense I guess (e.g. unmapping that text page) but I don't see > how the segment registers etc. could get corrupted. Segment reg's can get corrupt if the ldt or gdt entry changes or gets deleted, or maybe some other reasons -- Mark Zealey (aka JALH on irc.openprojects.net: #zealos and many more) mark@zealos.org mark@itsolve.co.uk UL++++>$ G!>(GCM/GCS/GS/GM) dpu? s:-@ a16! C++++>$ P++++>+++++$ L+++>+++++$ !E---? W+++>$ N- !o? !w--- O? !M? !V? !PS !PE--@ PGP+? r++ !t---?@ !X---? !R- b+ !tv b+ DI+ D+? G+++ e>+++++ !h++* r!-- y-- (www.geekcode.com) -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ IRC Channel: irc.openprojects.net / #kernelnewbies Web Page: http://www.kernelnewbies.org/