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

Chris Lattner clattner@apple.com
Thu Mar 6 00:37:00 GMT 2008


>>> 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()?
>>
>> How hard is it to change the kernel signal entry path from "pushf" to
>> "pushf;cld"?  Problem solved, no?
>
> The problem is with old kernels, which by definition stay unfixed.

My impression was that the problem occurs in GCC compiled code in the  
kernel itself, not in user space:

1. User space has direction flag set.
2. signal occurs
3. kernel code is entered
4. kernel code does string operation <boom>

Fixing this instance of the problem by changing GCC requires (at  
least) recompiling the kernel.

Changing the ABI for this seems like a pretty crazy solution to a very  
minor and easily fixable kernel bug.  Distros have control over what  
kernels they ship, they have absolute power to ensure this doesn't  
affect their users when running default kernels - without changing the  
compiler.

-Chris



More information about the Gcc mailing list