cris: Mark end of BUG() implementation as unreachable
PATCH 1/1 cris: Mark end of BUG() implementation as unreachable
When building the cris v10 architecture, the compiler doesn't realize that BUG() doesn't return, so it will complain about functions using BUG() that are marked with the noreturn attribute:
mm/usercopy.c: In function 'usercopy_abort':
Quoted 1 line
Quoted 1 line
mm/usercopy.c:86:1: warning: 'noreturn' function does return
}
^This fixes it for v10, similar to how it already works on v32.
Reported-by kbuild test robot <[email protected]>
Signed-off-by Kees Cook <[email protected]>
--- arch/cris/include/arch-v10/arch/bug.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
arch/cris/include/arch-v10/arch/bug.h +10 -2
@@ -44,18 +44,26 @@ struct bug_frame {* not be used like this with newer versions of gcc. */ #define BUG () \ +do { \ __asm__ __volatile__ ("clear.d [" __stringify(BUG_MAGIC) "]\n\t"\ "movu.w " __stringify(__LINE__) ",$r0\n\t"\ "jump 0f\n\t" \ ".section .rodata\n" \ "0:\t.string \"" __FILE__ "\"\n\t" \ - ".previous") + ".previous"); \ + unreachable(); \ +} while (0)#endif #else /* This just causes an oops. */ -#define BUG () (*(int *)0 = 0) +#define BUG () \ +do { \ + (*(int *)0 = 0); \ + do {} while (1); \ + unreachable(); \ +} while (0)#endif
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security