• Jessica Yu's avatar
    module: preserve Elf information for livepatch modules · 1ce15ef4
    Jessica Yu authored
    For livepatch modules, copy Elf section, symbol, and string information
    from the load_info struct in the module loader. Persist copies of the
    original symbol table and string table.
    Livepatch manages its own relocation sections in order to reuse module
    loader code to write relocations. Livepatch modules must preserve Elf
    information such as section indices in order to apply livepatch relocation
    sections using the module loader's apply_relocate_add() function.
    In order to apply livepatch relocation sections, livepatch modules must
    keep a complete copy of their original symbol table in memory. Normally, a
    stripped down copy of a module's symbol table (containing only "core"
    symbols) is made available through module->core_symtab. But for livepatch
    modules, the symbol table copied into memory on module load must be exactly
    the same as the symbol table produced when the patch module was compiled.
    This is because the relocations in each livepatch relocation section refer
    to their respective symbols with their symbol indices, and the original
    symbol indices (and thus the symtab ordering) must be preserved in order
    for apply_relocate_add() to find the right symbol.
    Signed-off-by: default avatarJessica Yu <jeyu@redhat.com>
    Reviewed-by: default avatarMiroslav Benes <mbenes@suse.cz>
    Acked-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    Reviewed-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
module.c 107 KB