• Dave Marchevsky's avatar
    selftests/bpf: Add write to hashmap to array_map iter test · 8f4bc15b
    Dave Marchevsky authored
    Modify iter prog in existing bpf_iter_bpf_array_map.c, which currently
    dumps arraymap key/val, to also do a write of (val, key) into a
    newly-added hashmap. Confirm that the write succeeds as expected by
    modifying the userspace runner program.
    
    Before a change added in an earlier commit - considering PTR_TO_BUF reg
    a valid input to helpers which expect MAP_{KEY,VAL} - the verifier
    would've rejected this prog change due to type mismatch. Since using
    current iter's key/val to access a separate map is a reasonable usecase,
    let's add support for it.
    
    Note that the test prog cannot directly write (val, key) into hashmap
    via bpf_map_update_elem when both come from iter context because key is
    marked MEM_RDONLY. This is due to bpf_map_update_elem - and other basic
    map helpers - taking ARG_PTR_TO_MAP_{KEY,VALUE} w/o MEM_RDONLY type
    flag. bpf_map_{lookup,update,delete}_elem don't modify their
    input key/val so it should be possible to tag their args READONLY, but
    due to the ubiquitous use of these helpers and verifier checks for
    type == MAP_VALUE, such a change is nontrivial and seems better to
    address in a followup series.
    
    Also fixup some 'goto's in test runner's map checking loop.
    Signed-off-by: default avatarDave Marchevsky <davemarchevsky@fb.com>
    Acked-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/r/20221020160721.4030492-4-davemarchevsky@fb.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    8f4bc15b
bpf_iter.c 42.2 KB