summaryrefslogtreecommitdiff
path: root/arch/x86/lib/cmpxchg8b_emu.S
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2014-10-15 22:37:13 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2014-10-19 09:20:52 +0100
commit7fc150543c73de71859631c8a6b17e3067fe7617 (patch)
tree1ea52a1ffa87662c728a2d311aa5879d475c6e1f /arch/x86/lib/cmpxchg8b_emu.S
parentbfe01a5ba2490f299e1d2d5508cbbbadd897bbe9 (diff)
ARM: Blacklist GCC 4.8.0 to GCC 4.8.2 - PR58854
These stock GCC versions miscompile the kernel by incorrectly optimising the function epilogue code - by first increasing the stack pointer, and then loading entries from below the stack. This means that an opportune interrupt or exception will corrupt the current function's saved state, which may result in the parent function seeing different register values. As this bug has been known to result in corrupted filesystems, and these buggy compiler versions seem to be frequently used, we have little option but to blacklist these compiler versions. Distributions may have fixed PR58854, but as their compilers are totally indistinguishable from the buggy versions, it is unfortunate that this also results in those also being blacklisted. Given the filesystem corruption potential of the original, this is the lesser evil. People who want to build with their fixed compiler versions will need to adjust the kernel source. (Distros need to think about the implications of fixing such a compiler bug, and consider how to ensure that their fixed compiler versions can be detected if they wish to avoid this.) Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/x86/lib/cmpxchg8b_emu.S')
0 files changed, 0 insertions, 0 deletions