bpf: Fix the test_task_vma selftest to support output shorter than 1 kB
[ 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>