Blob Blame History Raw
From: Yonghong Song <yhs@fb.com>
Date: Tue, 18 Aug 2020 15:23:12 -0700
Subject: bpftool: Handle EAGAIN error code properly in pids collection
Patch-mainline: v5.9-rc2
Git-commit: 00fa1d83a8b50351c830521d00135e823c46e7d0
References: bsc#1177028

When the error code is EAGAIN, the kernel signals the user
space should retry the read() operation for bpf iterators.
Let us do it.

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200818222312.2181675-1-yhs@fb.com
Acked-by: Gary Lin <glin@suse.com>
---
 tools/bpf/bpftool/pids.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/tools/bpf/bpftool/pids.c
+++ b/tools/bpf/bpftool/pids.c
@@ -134,6 +134,8 @@ int build_obj_refs_table(struct obj_refs
 	while (true) {
 		ret = read(fd, buf, sizeof(buf));
 		if (ret < 0) {
+			if (errno == EAGAIN)
+				continue;
 			err = -errno;
 			p_err("failed to read PID iterator output: %d", err);
 			goto out;