lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 062/717] bpf: Fix tests for local_storage
    Date
    From: KP Singh <kpsingh@google.com>

    [ Upstream commit f0e5ba0bc481df77cf0afac2b33e420b33eeb463 ]

    The {inode,sk}_storage_result checking if the correct value was retrieved
    was being clobbered unconditionally by the return value of the
    bpf_{inode,sk}_storage_delete call.

    Also, consistently use the newly added BPF_LOCAL_STORAGE_GET_F_CREATE
    flag.

    Fixes: cd324d7abb3d ("bpf: Add selftests for local_storage")
    Signed-off-by: KP Singh <kpsingh@google.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Song Liu <songliubraving@fb.com>
    Link: https://lore.kernel.org/bpf/20201106103747.2780972-7-kpsingh@chromium.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../selftests/bpf/progs/local_storage.c | 24 ++++++++++++-------
    1 file changed, 15 insertions(+), 9 deletions(-)

    diff --git a/tools/testing/selftests/bpf/progs/local_storage.c b/tools/testing/selftests/bpf/progs/local_storage.c
    index 0758ba229ae0e..09529e33be982 100644
    --- a/tools/testing/selftests/bpf/progs/local_storage.c
    +++ b/tools/testing/selftests/bpf/progs/local_storage.c
    @@ -58,20 +58,22 @@ int BPF_PROG(unlink_hook, struct inode *dir, struct dentry *victim)
    {
    __u32 pid = bpf_get_current_pid_tgid() >> 32;
    struct dummy_storage *storage;
    + int err;

    if (pid != monitored_pid)
    return 0;

    storage = bpf_inode_storage_get(&inode_storage_map, victim->d_inode, 0,
    - BPF_SK_STORAGE_GET_F_CREATE);
    + BPF_LOCAL_STORAGE_GET_F_CREATE);
    if (!storage)
    return 0;

    - if (storage->value == DUMMY_STORAGE_VALUE)
    + if (storage->value != DUMMY_STORAGE_VALUE)
    inode_storage_result = -1;

    - inode_storage_result =
    - bpf_inode_storage_delete(&inode_storage_map, victim->d_inode);
    + err = bpf_inode_storage_delete(&inode_storage_map, victim->d_inode);
    + if (!err)
    + inode_storage_result = err;

    return 0;
    }
    @@ -82,19 +84,23 @@ int BPF_PROG(socket_bind, struct socket *sock, struct sockaddr *address,
    {
    __u32 pid = bpf_get_current_pid_tgid() >> 32;
    struct dummy_storage *storage;
    + int err;

    if (pid != monitored_pid)
    return 0;

    storage = bpf_sk_storage_get(&sk_storage_map, sock->sk, 0,
    - BPF_SK_STORAGE_GET_F_CREATE);
    + BPF_LOCAL_STORAGE_GET_F_CREATE);
    if (!storage)
    return 0;

    - if (storage->value == DUMMY_STORAGE_VALUE)
    + if (storage->value != DUMMY_STORAGE_VALUE)
    sk_storage_result = -1;

    - sk_storage_result = bpf_sk_storage_delete(&sk_storage_map, sock->sk);
    + err = bpf_sk_storage_delete(&sk_storage_map, sock->sk);
    + if (!err)
    + sk_storage_result = err;
    +
    return 0;
    }

    @@ -109,7 +115,7 @@ int BPF_PROG(socket_post_create, struct socket *sock, int family, int type,
    return 0;

    storage = bpf_sk_storage_get(&sk_storage_map, sock->sk, 0,
    - BPF_SK_STORAGE_GET_F_CREATE);
    + BPF_LOCAL_STORAGE_GET_F_CREATE);
    if (!storage)
    return 0;

    @@ -131,7 +137,7 @@ int BPF_PROG(file_open, struct file *file)
    return 0;

    storage = bpf_inode_storage_get(&inode_storage_map, file->f_inode, 0,
    - BPF_LOCAL_STORAGE_GET_F_CREATE);
    + BPF_LOCAL_STORAGE_GET_F_CREATE);
    if (!storage)
    return 0;

    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 16:39    [W:4.053 / U:0.452 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site