• Krzysztof Halasa's avatar
    kbuild: Fix modpost segfault · 1c938663
    Krzysztof Halasa authored
    Alan <alan@clueserver.org> writes:
    
    > program: /home/alan/GitTrees/linux-2.6-mid-ref/scripts/mod/modpost -o
    > Module.symvers -S vmlinux.o
    >
    > Program received signal SIGSEGV, Segmentation fault.
    
    It just hit me.
    It's the offset calculation in reloc_location() which overflows:
            return (void *)elf->hdr + sechdrs[section].sh_offset +
                   (r->r_offset - sechdrs[section].sh_addr);
    
    E.g. for the first rodata r entry:
    r->r_offset < sechdrs[section].sh_addr
    and the expression in the parenthesis produces 0xFFFFFFE0 or something
    equally wise.
    Reported-by: default avatarAlan <alan@clueserver.org>
    Signed-off-by: default avatarKrzysztof Hałasa <khc@pm.waw.pl>
    Tested-by: default avatarAlan <alan@clueserver.org>
    Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
    1c938663
modpost.c 52.6 KB