lkml.org 
[lkml]   [2019]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.0 069/262] tools/bpf: selftests: add map lookup to test_map_in_map bpf prog
    Date
    From: Yonghong Song <yhs@fb.com>

    [ Upstream commit 9eca5083757b679b37f210092c871916c2c222d0 ]

    The bpf_map_lookup_elem is added in the bpf program.
    Without previous patch, the test change will trigger the
    following error:
    $ ./test_maps
    ...
    ; value_p = bpf_map_lookup_elem(map, &key);
    20: (bf) r1 = r7
    21: (bf) r2 = r8
    22: (85) call bpf_map_lookup_elem#1
    ; if (!value_p || *value_p != 123)
    23: (15) if r0 == 0x0 goto pc+16
    R0=map_value(id=2,off=0,ks=4,vs=4,imm=0) R6=inv1 R7=map_ptr(id=0,off=0,ks=4,vs=4,imm=0)
    R8=fp-8,call_-1 R10=fp0,call_-1 fp-8=mmmmmmmm
    ; if (!value_p || *value_p != 123)
    24: (61) r1 = *(u32 *)(r0 +0)
    R0=map_value(id=2,off=0,ks=4,vs=4,imm=0) R6=inv1 R7=map_ptr(id=0,off=0,ks=4,vs=4,imm=0)
    R8=fp-8,call_-1 R10=fp0,call_-1 fp-8=mmmmmmmm
    bpf_spin_lock cannot be accessed directly by load/store

    With the kernel fix in the previous commit, the error goes away.

    Signed-off-by: Yonghong Song <yhs@fb.com>
    Acked-by: Andrii Nakryiko <andriin@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/bpf/test_map_in_map.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/tools/testing/selftests/bpf/test_map_in_map.c b/tools/testing/selftests/bpf/test_map_in_map.c
    index ce923e67e08e..2985f262846e 100644
    --- a/tools/testing/selftests/bpf/test_map_in_map.c
    +++ b/tools/testing/selftests/bpf/test_map_in_map.c
    @@ -27,6 +27,7 @@ SEC("xdp_mimtest")
    int xdp_mimtest0(struct xdp_md *ctx)
    {
    int value = 123;
    + int *value_p;
    int key = 0;
    void *map;

    @@ -35,6 +36,9 @@ int xdp_mimtest0(struct xdp_md *ctx)
    return XDP_DROP;

    bpf_map_update_elem(map, &key, &value, 0);
    + value_p = bpf_map_lookup_elem(map, &key);
    + if (!value_p || *value_p != 123)
    + return XDP_DROP;

    map = bpf_map_lookup_elem(&mim_hash, &key);
    if (!map)
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-03-27 20:29    [W:4.698 / U:0.112 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site