• T
    libbpf: Sanitise map names before pinning · 9cf309c5
    Toke Høiland-Jørgensen 提交于
    When we added sanitising of map names before loading programs to libbpf, we
    still allowed periods in the name. While the kernel will accept these for
    the map names themselves, they are not allowed in file names when pinning
    maps. This means that bpf_object__pin_maps() will fail if called on an
    object that contains internal maps (such as sections .rodata).
    
    Fix this by replacing periods with underscores when constructing map pin
    paths. This only affects the paths generated by libbpf when
    bpf_object__pin_maps() is called with a path argument. Any pin paths set
    by bpf_map__set_pin_path() are unaffected, and it will still be up to the
    caller to avoid invalid characters in those.
    
    Fixes: 113e6b7e ("libbpf: Sanitise internal map names so they are not rejected by the kernel")
    Signed-off-by: NToke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: NAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20201203093306.107676-1-toke@redhat.com
    9cf309c5
libbpf.c 280.2 KB