• Masahiro Yamada's avatar
    modpost: fix potential segmentation fault for addend_i386_rel() · d2e4d05c
    Masahiro Yamada authored
    This may not be a practical problem, but the second pass of ARCH=i386
    modpost causes segmentation fault if the -s option is not passed.
    
        MODPOST 12 modules
      Segmentation fault (core dumped)
      make[2]: *** [scripts/Makefile.modpost:94: __modpost] Error 139
      make[1]: *** [Makefile:1339: modules] Error 2
      make[1]: *** Waiting for unfinished jobs....
    
    The segmentation fault occurs when section_rel() is called for vmlinux,
    which is untested in regular builds. The cause of the problem is
    reloc_location() returning a wrong pointer for ET_EXEC object type.
    In this case, you need to subtract sechdr->sh_addr, otherwise it would
    get access beyond the mmap'ed memory.
    
    Add sym_get_data_by_offset() helper to avoid code duplication.
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    d2e4d05c
modpost.c 69.3 KB