x86/boot: Hide local labels in verify_cpu()
authorBorislav Petkov <bp@suse.de>
Sun, 3 Jan 2016 22:38:53 +0000 (23:38 +0100)
committerIngo Molnar <mingo@kernel.org>
Tue, 12 Jan 2016 10:54:32 +0000 (11:54 +0100)
... from the final ELF image's symbol table as they're not
really needed there.

Before:

$ readelf -a vmlinux | grep verify_cpu
    43: ffffffff810001a9     0 NOTYPE  LOCAL  DEFAULT    1 verify_cpu
    45: ffffffff8100028f     0 NOTYPE  LOCAL  DEFAULT    1 verify_cpu_no_longmode
    46: ffffffff810001de     0 NOTYPE  LOCAL  DEFAULT    1 verify_cpu_noamd
    47: ffffffff8100022b     0 NOTYPE  LOCAL  DEFAULT    1 verify_cpu_check
    48: ffffffff8100021c     0 NOTYPE  LOCAL  DEFAULT    1 verify_cpu_clear_xd
    49: ffffffff81000263     0 NOTYPE  LOCAL  DEFAULT    1 verify_cpu_sse_test
    50: ffffffff81000296     0 NOTYPE  LOCAL  DEFAULT    1 verify_cpu_sse_ok

After:

$ readelf -a vmlinux | grep verify_cpu
    43: ffffffff810001a9     0 NOTYPE  LOCAL  DEFAULT    1 verify_cpu

No functionality change.

Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1451860733-21163-1-git-send-email-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/verify_cpu.S

index 4cf401f..07efb35 100644 (file)
@@ -48,31 +48,31 @@ verify_cpu:
        pushfl
        popl    %eax
        cmpl    %eax,%ebx
-       jz      verify_cpu_no_longmode  # cpu has no cpuid
+       jz      .Lverify_cpu_no_longmode        # cpu has no cpuid
 #endif
 
        movl    $0x0,%eax               # See if cpuid 1 is implemented
        cpuid
        cmpl    $0x1,%eax
-       jb      verify_cpu_no_longmode  # no cpuid 1
+       jb      .Lverify_cpu_no_longmode        # no cpuid 1
 
        xor     %di,%di
        cmpl    $0x68747541,%ebx        # AuthenticAMD
-       jnz     verify_cpu_noamd
+       jnz     .Lverify_cpu_noamd
        cmpl    $0x69746e65,%edx
-       jnz     verify_cpu_noamd
+       jnz     .Lverify_cpu_noamd
        cmpl    $0x444d4163,%ecx
-       jnz     verify_cpu_noamd
+       jnz     .Lverify_cpu_noamd
        mov     $1,%di                  # cpu is from AMD
-       jmp     verify_cpu_check
+       jmp     .Lverify_cpu_check
 
-verify_cpu_noamd:
+.Lverify_cpu_noamd:
        cmpl    $0x756e6547,%ebx        # GenuineIntel?
-       jnz     verify_cpu_check
+       jnz     .Lverify_cpu_check
        cmpl    $0x49656e69,%edx
-       jnz     verify_cpu_check
+       jnz     .Lverify_cpu_check
        cmpl    $0x6c65746e,%ecx
-       jnz     verify_cpu_check
+       jnz     .Lverify_cpu_check
 
        # only call IA32_MISC_ENABLE when:
        # family > 6 || (family == 6 && model >= 0xd)
@@ -83,59 +83,59 @@ verify_cpu_noamd:
        andl    $0x0ff00f00, %eax       # mask family and extended family
        shrl    $8, %eax
        cmpl    $6, %eax
-       ja      verify_cpu_clear_xd     # family > 6, ok
-       jb      verify_cpu_check        # family < 6, skip
+       ja      .Lverify_cpu_clear_xd   # family > 6, ok
+       jb      .Lverify_cpu_check      # family < 6, skip
 
        andl    $0x000f00f0, %ecx       # mask model and extended model
        shrl    $4, %ecx
        cmpl    $0xd, %ecx
-       jb      verify_cpu_check        # family == 6, model < 0xd, skip
+       jb      .Lverify_cpu_check      # family == 6, model < 0xd, skip
 
-verify_cpu_clear_xd:
+.Lverify_cpu_clear_xd:
        movl    $MSR_IA32_MISC_ENABLE, %ecx
        rdmsr
        btrl    $2, %edx                # clear MSR_IA32_MISC_ENABLE_XD_DISABLE
-       jnc     verify_cpu_check        # only write MSR if bit was changed
+       jnc     .Lverify_cpu_check      # only write MSR if bit was changed
        wrmsr
 
-verify_cpu_check:
+.Lverify_cpu_check:
        movl    $0x1,%eax               # Does the cpu have what it takes
        cpuid
        andl    $REQUIRED_MASK0,%edx
        xorl    $REQUIRED_MASK0,%edx
-       jnz     verify_cpu_no_longmode
+       jnz     .Lverify_cpu_no_longmode
 
        movl    $0x80000000,%eax        # See if extended cpuid is implemented
        cpuid
        cmpl    $0x80000001,%eax
-       jb      verify_cpu_no_longmode  # no extended cpuid
+       jb      .Lverify_cpu_no_longmode        # no extended cpuid
 
        movl    $0x80000001,%eax        # Does the cpu have what it takes
        cpuid
        andl    $REQUIRED_MASK1,%edx
        xorl    $REQUIRED_MASK1,%edx
-       jnz     verify_cpu_no_longmode
+       jnz     .Lverify_cpu_no_longmode
 
-verify_cpu_sse_test:
+.Lverify_cpu_sse_test:
        movl    $1,%eax
        cpuid
        andl    $SSE_MASK,%edx
        cmpl    $SSE_MASK,%edx
-       je      verify_cpu_sse_ok
+       je      .Lverify_cpu_sse_ok
        test    %di,%di
-       jz      verify_cpu_no_longmode  # only try to force SSE on AMD
+       jz      .Lverify_cpu_no_longmode        # only try to force SSE on AMD
        movl    $MSR_K7_HWCR,%ecx
        rdmsr
        btr     $15,%eax                # enable SSE
        wrmsr
        xor     %di,%di                 # don't loop
-       jmp     verify_cpu_sse_test     # try again
+       jmp     .Lverify_cpu_sse_test   # try again
 
-verify_cpu_no_longmode:
+.Lverify_cpu_no_longmode:
        popf                            # Restore caller passed flags
        movl $1,%eax
        ret
-verify_cpu_sse_ok:
+.Lverify_cpu_sse_ok:
        popf                            # Restore caller passed flags
        xorl %eax, %eax
        ret