summaryrefslogtreecommitdiff
path: root/Extra
diff options
context:
space:
mode:
Diffstat (limited to 'Extra')
0 files changed, 0 insertions, 0 deletions
/Documentation/men-chameleon-bus.txt?h=nds-private-remove&id=208fae5c3b9431013ad7bcea07cbcee114e7d163'>208fae5c3b9431013ad7bcea07cbcee114e7d163 (patch) treeda2ce503a9f38d131a3157aa7ef3fdf5ab81b4a1 /Documentation/men-chameleon-bus.txt parentf2335a2a0a590c88e6cb68e4fb8cd835e81e827e (diff)
ARM: 8550/1: protect idiv patching against undefined gcc behavior
It was reported that a kernel with CONFIG_ARM_PATCH_IDIV=y stopped booting when compiled with the upcoming gcc 6. Turns out that turning a function address into a writable array is undefined and gcc 6 decided it was OK to omit the store to the first word of the function while still preserving the store to the second word. Even though gcc 6 is now fixed to behave more coherently, it is a mystery that gcc 4 and gcc 5 actually produce wanted code in the kernel. And in fact the reduced test case to illustrate the issue does indeed break with gcc < 6 as well. In any case, let's guard the kernel against undefined compiler behavior by hiding the nature of the array location as suggested by gcc developers. Reference: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70128 Signed-off-by: Nicolas Pitre <nico@linaro.org> Reported-by: Marcin Juszkiewicz <mjuszkiewicz@redhat.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: stable@vger.kernel.org # v4.5 Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'Documentation/men-chameleon-bus.txt')