why does it *not* crash?

Julien Oster (frodo@dereference.de)
Sat, 15 Feb 2003 00:08:50 +0100


Hello!

I'm trying to understand memory management on IA-32. I already read a
lot, and also coded a lot in assembler to test some things out.

However, one thing, I just don't understand and I can't seem to find a
hint how it works.

Wenn I write a very small kernel module, which just sets ESP to
0x00000000, shouldn't the processor shut down and the mainboard reset?
But no: it causes an oops, kills the process where the error originated from
(in this case insmod, since it was loading the module) and happily
continues working as if nothing ever happened.

But how can this work? I know there are special fields in the TSS which
specify what to load ESP with in case of a privilege transition, but
there is no privilege transition since I'm already in CPL 0, or is
there?

Even the IA-32 developer's manual says, that giving ESP a value of 0 in
CPL 0 should shut down the processer, since there's no stack for
anything anymore.

So, what's the magic in Linux? :)

Thanks in advance,
Julien

-
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/