Hi,
Linus Torvalds wrote:
Yes. But how do you have _such_ an empty stack when the interrupt comes in? See what I mean?
Yes, I hope so.
IOW, that requires that the kernel stack would have only two words on it when the interrupt happens. How?
Well, you can simply do something like this:
--- entry.S.old1 2005-04-05 22:54:43.000000000 +0400 +++ entry.S 2005-04-06 19:35:14.000000000 +0400 @@ -179,9 +179,9 @@ ENTRY(sysenter_entry) movl TSS_sysenter_esp0(%esp),%esp sysenter_past_esp: - sti pushl $(__USER_DS) pushl %ebp + sti pushfl pushl $(__USER_CS) pushl $SYSENTER_RETURN
And this will "elimenate" the problem (modulo NMI and there could be other places too, but for me it elimenates it completely). So I don't think this is something strange.
So I definitely think the "bug" is in your optimization,
Yes, and I think the patch I posted, can just work, or are there the problems with the taken forward jump on a fast path?
I just think it should be a valid optimization
But it is totally bogus, why not should it crash? It is probably even very good that it does:)
and we should just make sure our kernel stack is never _so_ empty that "struct pt_regs" is not safe to dereference.I guess you'll just need to adjust the tss.esp0
then, but do you really want this? Accesing
the registers that are simply not there, doesn't
sound too good I think.
Or am I still missing your point?
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/