Re: [patch] i386: annotate the rest of entry.s::nmi

From: Chuck Ebbert
Date: Fri Aug 11 2006 - 19:15:52 EST

In-Reply-To: <44DC496D.76E4.0078.0@xxxxxxxxxx>

On Fri, 11 Aug 2006 09:10:05 +0200, Jan Beulich wrote:

> I understand now, but am still uncertain
> about the need to annotate FIX_STACK() - especially since you use
> .cfi_undefined, meaning the return point cannot be established anyway.
> If at all I'd annotate the initial pushes with either just the normal
> CFI_ADJUST_CFA_OFFSET, and the final one with one setting back the
> CFA base to the now adjusted frame. That way, until the pushes are
> complete the old frame will be used for determining the call origin,
> and once complete the (full) new state will be used.

But that's the whole point of the new annotations -- we have just
overwritten %esp with a new value and the old assumptions are
completely broken:

movl TSS_sysenter_esp0+offset(%esp),%esp; \

After this the old frame cannot be located by using %esp as a base
and the new frame is incomplete. So the only choice is to make eip
undefined until the new value is available -- if not then the
unwinder will try to use whatever random values are on the new frame.
Either that or I'm still unclear on how unwind works...


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at