• Kees Cook's avatar
    x86/boot: Refuse to build with data relocations · 98f78525
    Kees Cook authored
    The compressed kernel is built with -fPIC/-fPIE so that it can run in any
    location a bootloader happens to put it. However, since ELF relocation
    processing is not happening (and all the relocation information has
    already been stripped at link time), none of the code can use data
    relocations (e.g. static assignments of pointers). This is already noted
    in a warning comment at the top of misc.c, but this adds an explicit
    check for the condition during the linking stage to block any such bugs
    from appearing.
    
    If this was in place with the earlier bug in pagetable.c, the build
    would fail like this:
    
      ...
        CC      arch/x86/boot/compressed/pagetable.o
        DATAREL arch/x86/boot/compressed/vmlinux
      error: arch/x86/boot/compressed/pagetable.o has data relocations!
      make[2]: *** [arch/x86/boot/compressed/vmlinux] Error 1
      ...
    
    A clean build shows:
    
      ...
        CC      arch/x86/boot/compressed/pagetable.o
        DATAREL arch/x86/boot/compressed/vmlinux
        LD      arch/x86/boot/compressed/vmlinux
      ...
    Suggested-by: default avatarIngo Molnar <mingo@kernel.org>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: H.J. Lu <hjl.tools@gmail.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Link: http://lkml.kernel.org/r/1464216334-17200-2-git-send-email-keescook@chromium.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    98f78525
Makefile 4.98 KB