ARM: Blacklist GCC 4.8.0 to GCC 4.8.2 - PR58854
authorRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 15 Oct 2014 21:37:13 +0000 (22:37 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 19 Oct 2014 08:20:52 +0000 (09:20 +0100)
commit7fc150543c73de71859631c8a6b17e3067fe7617
tree1ea52a1ffa87662c728a2d311aa5879d475c6e1f
parentbfe01a5ba2490f299e1d2d5508cbbbadd897bbe9
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>
arch/arm/kernel/asm-offsets.c