• Martin KaFai Lau's avatar
    bpf: btf: Use exact btf value_size match in map_check_btf() · 5f300e80
    Martin KaFai Lau authored
    The current map_check_btf() in BPF_MAP_TYPE_ARRAY rejects
    '> map->value_size' to ensure map_seq_show_elem() will not
    access things beyond an array element.
    
    Yonghong suggested that using '!=' is a more correct
    check.  The 8 bytes round_up on value_size is stored
    in array->elem_size.  Hence, using '!=' on map->value_size
    is a proper check.
    
    This patch also adds new tests to check the btf array
    key type and value type.  Two of these new tests verify
    the btf's value_size (the change in this patch).
    
    It also fixes two existing tests that wrongly encoded
    a btf's type size (pprint_test) and the value_type_id (in one
    of the raw_tests[]).  However, that do not affect these two
    BTF verification tests before or after this test changes.
    These two tests mainly failed at array creation time after
    this patch.
    
    Fixes: a26ca7c9 ("bpf: btf: Add pretty print support to the basic arraymap")
    Suggested-by: 's avatarYonghong Song <yhs@fb.com>
    Acked-by: 's avatarYonghong Song <yhs@fb.com>
    Signed-off-by: 's avatarMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: 's avatarDaniel Borkmann <daniel@iogearbox.net>
    5f300e80
arraymap.c 19.5 KB