]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
bpf: minor cleanups for bpf_trace_pipe
authorDaniel Borkmann <daniel@iogearbox.net>
Tue, 5 Sep 2017 00:24:31 +0000 (02:24 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Tue, 5 Sep 2017 16:26:34 +0000 (09:26 -0700)
Just minor nits, e.g. no need to fflush() and instead of returning
right away, just break and close the fd.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
lib/bpf.c

index 5fd4928c7e6e48e070458664f30b0f40a0ebf4b0..7463fdc8c4b775ab8c9c3b1aa473666ae62e85e3 100644 (file)
--- a/lib/bpf.c
+++ b/lib/bpf.c
@@ -569,9 +569,9 @@ int bpf_trace_pipe(void)
                "/trace",
                0,
        };
+       int fd_in, fd_out = STDERR_FILENO;
        char tpipe[PATH_MAX];
        const char *mnt;
-       int fd;
 
        mnt = bpf_find_mntpt("tracefs", TRACEFS_MAGIC, tracefs_mnt,
                             sizeof(tracefs_mnt), tracefs_known_mnts);
@@ -582,8 +582,8 @@ int bpf_trace_pipe(void)
 
        snprintf(tpipe, sizeof(tpipe), "%s/trace_pipe", mnt);
 
-       fd = open(tpipe, O_RDONLY);
-       if (fd < 0)
+       fd_in = open(tpipe, O_RDONLY);
+       if (fd_in < 0)
                return -1;
 
        fprintf(stderr, "Running! Hang up with ^C!\n\n");
@@ -591,15 +591,14 @@ int bpf_trace_pipe(void)
                static char buff[4096];
                ssize_t ret;
 
-               ret = read(fd, buff, sizeof(buff) - 1);
-               if (ret > 0) {
-                       if (write(STDERR_FILENO, buff, ret) != ret)
-                               return -1;
-                       fflush(stderr);
-               }
+               ret = read(fd_in, buff, sizeof(buff));
+               if (ret > 0 && write(fd_out, buff, ret) == ret)
+                       continue;
+               break;
        }
 
-       return 0;
+       close(fd_in);
+       return -1;
 }
 
 static int bpf_gen_global(const char *bpf_sub_dir)