• Jesper Dangaard Brouer's avatar
    samples/bpf: make bpf_load.c code compatible with ELF maps section changes · 156450d9
    Jesper Dangaard Brouer authored
    This patch does proper parsing of the ELF "maps" section, in-order to
    be both backwards and forwards compatible with changes to the map
    definition struct bpf_map_def, which gets compiled into the ELF file.
    
    The assumption is that new features with value zero, means that they
    are not in-use.  For backward compatibility where loading an ELF file
    with a smaller struct bpf_map_def, only copy objects ELF size, leaving
    rest of loaders struct zero.  For forward compatibility where ELF file
    have a larger struct bpf_map_def, only copy loaders own struct size
    and verify that rest of the larger struct is zero, assuming this means
    the newer feature was not activated, thus it should be safe for this
    older loader to load this newer ELF file.
    
    Fixes: fb30d4b7 ("bpf: Add tests for map-in-map")
    Fixes: 409526bea3c3 ("samples/bpf: bpf_load.c detect and abort if ELF maps section size is wrong")
    Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    156450d9
bpf_load.c 18.3 KB