From mboxrd@z Thu Jan 1 00:00:00 1970 From: Taeung Song Subject: [PATCH 3/4] samples/bpf: Check the error of write() and read() Date: Mon, 2 Jul 2018 18:14:52 +0900 Message-ID: <1530522893-8961-4-git-send-email-treeze.taeung@gmail.com> References: <1530522893-8961-1-git-send-email-treeze.taeung@gmail.com> Cc: Teng Qin , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Taeung Song To: Alexei Starovoitov , Daniel Borkmann Return-path: In-Reply-To: <1530522893-8961-1-git-send-email-treeze.taeung@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org test_task_rename() and test_urandom_read() can be failed during write() and read(), So check the result of them. Signed-off-by: Taeung Song --- samples/bpf/test_overhead_user.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/samples/bpf/test_overhead_user.c b/samples/bpf/test_overhead_user.c index 6caf47a..8a88d9c 100644 --- a/samples/bpf/test_overhead_user.c +++ b/samples/bpf/test_overhead_user.c @@ -6,6 +6,7 @@ */ #define _GNU_SOURCE #include +#include #include #include #include @@ -44,8 +45,12 @@ static void test_task_rename(int cpu) exit(1); } start_time = time_get_ns(); - for (i = 0; i < MAX_CNT; i++) - write(fd, buf, sizeof(buf)); + for (i = 0; i < MAX_CNT; i++) { + if (write(fd, buf, sizeof(buf)) < 0) { + printf("task rename failed: %s\n", strerror(errno)); + break; + } + } printf("task_rename:%d: %lld events per sec\n", cpu, MAX_CNT * 1000000000ll / (time_get_ns() - start_time)); close(fd); @@ -55,7 +60,7 @@ static void test_urandom_read(int cpu) { __u64 start_time; char buf[4]; - int i, fd; + int i, fd, err = 0; fd = open("/dev/urandom", O_RDONLY); if (fd < 0) { @@ -63,8 +68,13 @@ static void test_urandom_read(int cpu) exit(1); } start_time = time_get_ns(); - for (i = 0; i < MAX_CNT; i++) - read(fd, buf, sizeof(buf)); + for (i = 0; i < MAX_CNT; i++) { + err = read(fd, buf, sizeof(buf)); + if (err < 0 || err >= sizeof(buf)) { + printf("failed to read from /dev/urandom: %s\n", strerror(errno)); + break; + } + } printf("urandom_read:%d: %lld events per sec\n", cpu, MAX_CNT * 1000000000ll / (time_get_ns() - start_time)); close(fd); -- 2.7.4