lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0229/1039] bpf: Fix the test_task_vma selftest to support output shorter than 1 kB
    Date
    From: Maxim Mikityanskiy <maximmi@nvidia.com>

    [ Upstream commit da54ab14953c38d98cb3e34c564c06c3739394b2 ]

    The test for bpf_iter_task_vma assumes that the output will be longer
    than 1 kB, as the comment above the loop says. Due to this assumption,
    the loop becomes infinite if the output turns to be shorter than 1 kB.
    The return value of read_fd_into_buffer is 0 when the end of file was
    reached, and len isn't being increased any more.

    This commit adds a break on EOF to handle short output correctly. For
    the reference, this is the contents that I get when running test_progs
    under vmtest.sh, and it's shorter than 1 kB:

    00400000-00401000 r--p 00000000 fe:00 25867 /root/bpf/test_progs
    00401000-00674000 r-xp 00001000 fe:00 25867 /root/bpf/test_progs
    00674000-0095f000 r--p 00274000 fe:00 25867 /root/bpf/test_progs
    0095f000-00983000 r--p 0055e000 fe:00 25867 /root/bpf/test_progs
    00983000-00a8a000 rw-p 00582000 fe:00 25867 /root/bpf/test_progs
    00a8a000-0484e000 rw-p 00000000 00:00 0
    7f6c64000000-7f6c64021000 rw-p 00000000 00:00 0
    7f6c64021000-7f6c68000000 ---p 00000000 00:00 0
    7f6c6ac8f000-7f6c6ac90000 r--s 00000000 00:0d 8032
    anon_inode:bpf-map
    7f6c6ac90000-7f6c6ac91000 ---p 00000000 00:00 0
    7f6c6ac91000-7f6c6b491000 rw-p 00000000 00:00 0
    7f6c6b491000-7f6c6b492000 r--s 00000000 00:0d 8032
    anon_inode:bpf-map
    7f6c6b492000-7f6c6b493000 rw-s 00000000 00:0d 8032
    anon_inode:bpf-map
    7ffc1e23d000-7ffc1e25e000 rw-p 00000000 00:00 0
    7ffc1e3b8000-7ffc1e3bc000 r--p 00000000 00:00 0
    7ffc1e3bc000-7ffc1e3bd000 r-xp 00000000 00:00 0
    7fffffffe000-7ffffffff000 --xp 00000000 00:00 0

    Fixes: e8168840e16c ("selftests/bpf: Add test for bpf_iter_task_vma")
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211130181811.594220-1-maximmi@nvidia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/bpf/prog_tests/bpf_iter.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_iter.c b/tools/testing/selftests/bpf/prog_tests/bpf_iter.c
    index 9454331aaf85f..ea6823215e9c0 100644
    --- a/tools/testing/selftests/bpf/prog_tests/bpf_iter.c
    +++ b/tools/testing/selftests/bpf/prog_tests/bpf_iter.c
    @@ -1206,13 +1206,14 @@ static void test_task_vma(void)
    goto out;

    /* Read CMP_BUFFER_SIZE (1kB) from bpf_iter. Read in small chunks
    - * to trigger seq_file corner cases. The expected output is much
    - * longer than 1kB, so the while loop will terminate.
    + * to trigger seq_file corner cases.
    */
    len = 0;
    while (len < CMP_BUFFER_SIZE) {
    err = read_fd_into_buffer(iter_fd, task_vma_output + len,
    min(read_size, CMP_BUFFER_SIZE - len));
    + if (!err)
    + break;
    if (CHECK(err < 0, "read_iter_fd", "read_iter_fd failed\n"))
    goto out;
    len += err;
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 23:11    [W:4.350 / U:2.368 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site