arm64: asm-bug: Renumber macro local labels to avoid clashes
authorDave Martin <Dave.Martin@arm.com>
Tue, 24 Oct 2017 17:40:36 +0000 (18:40 +0100)
committerWill Deacon <will.deacon@arm.com>
Wed, 25 Oct 2017 14:57:15 +0000 (15:57 +0100)
Currently ASM_BUG() and its constituent macros define local
assembler labels 0, 1 and 2 internally, which carries a high risk
of clash with callers' labels and consequent mis-assembly.

This patch gives the labels a big random offset to minimise the
chance of such errors.

Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/asm-bug.h

index 636e755..b3552c4 100644 (file)
 #define _BUGVERBOSE_LOCATION(file, line) __BUGVERBOSE_LOCATION(file, line)
 #define __BUGVERBOSE_LOCATION(file, line)                      \
                .pushsection .rodata.str,"aMS",@progbits,1;     \
-       2:      .string file;                                   \
+       14472:  .string file;                                   \
                .popsection;                                    \
                                                                \
-               .long 2b - 0b;                                  \
+               .long 14472b - 14470b;                          \
                .short line;
 #else
 #define _BUGVERBOSE_LOCATION(file, line)
 #define __BUG_ENTRY(flags)                             \
                .pushsection __bug_table,"aw";          \
                .align 2;                               \
-       0:      .long 1f - 0b;                          \
+       14470:  .long 14471f - 14470b;                  \
 _BUGVERBOSE_LOCATION(__FILE__, __LINE__)               \
                .short flags;                           \
                .popsection;                            \
-       1:
+       14471:
 #else
 #define __BUG_ENTRY(flags)
 #endif