Re: RELEASE BLOCKER: Linux doesn't follow x86/x86-64 ABI wrt direction flag

From: H. Peter Anvin
Date: Thu Mar 06 2008 - 10:25:37 EST


Jakub Jelinek wrote:
On Thu, Mar 06, 2008 at 09:44:05AM +0100, Andi Kleen wrote:
"H. Peter Anvin" <hpa@xxxxxxxxx> writes:

Richard Guenther wrote:
We didn't yet run into this issue and build openSUSE with 4.3 since
more than
three month.

Well, how often do you take a trap inside an overlapping memmove()?
That was the state with older gcc, but with newer gcc it does not necessarily
reset the flag before the next function call.

If so, that's a much worse bug.

so e.g. if you have

memmove(...)
for (... very long loop .... ) {
/* no function calls */
/* signals happen */
}

the signal could see the direction flag

memmove is supposed to (and does) do a cld insn after it finishes the
backward copying.

You can still take a signal inside memmove() itself, of course.

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/