]> git.baikalelectronics.ru Git - kernel.git/commit
Makefile: Mute warning for __builtin_return_address(>0) for tracing only
authorSteven Rostedt <rostedt@goodmis.org>
Fri, 29 Jul 2016 02:30:43 +0000 (22:30 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Tue, 2 Aug 2016 16:57:48 +0000 (12:57 -0400)
commita1e76d27ea6e60f63a31ce933d445361bcb29dd4
tree6e124d8704f768251cf65bc2b4c8e5dc5b11f679
parentf02e2761d72b2fa75852f62e1b1c4ecbeb6e388d
Makefile: Mute warning for __builtin_return_address(>0) for tracing only

With the latest gcc compilers, they give a warning if
__builtin_return_address() parameter is greater than 0. That is because if
it is used by a function called by a top level function (or in the case of
the kernel, by assembly), it can try to access stack frames outside the
stack and crash the system.

The tracing system uses __builtin_return_address() of up to 2! But it is
well aware of the dangers that it may have, and has even added precautions
to protect against it (see the thunk code in arch/x86/entry/thunk*.S)

Linus originally added KBUILD_CFLAGS that would suppress the warning for the
entire kernel, as simply adding KBUILD_CFLAGS to the tracing directory
wouldn't work. The tracing directory plays a bit with the CFLAGS and
requires a little more logic.

This adds that special logic to only suppress the warning for the tracing
directory. If it is used anywhere else outside of tracing, the warning will
still be triggered.

Link: http://lkml.kernel.org/r/20160728223043.51996267@grimm.local.home
Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Makefile
kernel/trace/Makefile