samples, bpf: Refactor pointer error check with libbpf
authorDaniel T. Lee <danieltimlee@gmail.com>
Sat, 16 May 2020 04:06:04 +0000 (13:06 +0900)
committerDaniel Borkmann <daniel@iogearbox.net>
Tue, 19 May 2020 15:12:49 +0000 (17:12 +0200)
Current method of checking pointer error is not user friendly.
Especially the __must_check define makes this less intuitive.

Since, libbpf has an API libbpf_get_error() which checks pointer error,
this commit refactors existing pointer error check logic with libbpf.

Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20200516040608.1377876-2-danieltimlee@gmail.com
samples/bpf/sampleip_user.c
samples/bpf/trace_event_user.c
samples/bpf/xdp_redirect_cpu_user.c

index 4372d2d..921c505 100644 (file)
@@ -18,9 +18,6 @@
 #include "perf-sys.h"
 #include "trace_helpers.h"
 
-#define __must_check
-#include <linux/err.h>
-
 #define DEFAULT_FREQ   99
 #define DEFAULT_SECS   5
 #define MAX_IPS                8192
@@ -57,7 +54,7 @@ static int sampling_start(int freq, struct bpf_program *prog,
                        return 1;
                }
                links[i] = bpf_program__attach_perf_event(prog, pmu_fd);
-               if (IS_ERR(links[i])) {
+               if (libbpf_get_error(links[i])) {
                        fprintf(stderr, "ERROR: Attach perf event\n");
                        links[i] = NULL;
                        close(pmu_fd);
@@ -182,7 +179,7 @@ int main(int argc, char **argv)
 
        snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
        obj = bpf_object__open_file(filename, NULL);
-       if (IS_ERR(obj)) {
+       if (libbpf_get_error(obj)) {
                fprintf(stderr, "ERROR: opening BPF object file failed\n");
                obj = NULL;
                goto cleanup;
index b6cd358..ac1ba36 100644 (file)
@@ -16,9 +16,6 @@
 #include "perf-sys.h"
 #include "trace_helpers.h"
 
-#define __must_check
-#include <linux/err.h>
-
 #define SAMPLE_FREQ 50
 
 static int pid;
@@ -159,7 +156,7 @@ static void test_perf_event_all_cpu(struct perf_event_attr *attr)
                        goto all_cpu_err;
                }
                links[i] = bpf_program__attach_perf_event(prog, pmu_fd);
-               if (IS_ERR(links[i])) {
+               if (libbpf_get_error(links[i])) {
                        printf("bpf_program__attach_perf_event failed\n");
                        links[i] = NULL;
                        close(pmu_fd);
@@ -198,7 +195,7 @@ static void test_perf_event_task(struct perf_event_attr *attr)
                goto err;
        }
        link = bpf_program__attach_perf_event(prog, pmu_fd);
-       if (IS_ERR(link)) {
+       if (libbpf_get_error(link)) {
                printf("bpf_program__attach_perf_event failed\n");
                link = NULL;
                close(pmu_fd);
@@ -314,7 +311,7 @@ int main(int argc, char **argv)
        }
 
        obj = bpf_object__open_file(filename, NULL);
-       if (IS_ERR(obj)) {
+       if (libbpf_get_error(obj)) {
                printf("opening BPF object file failed\n");
                obj = NULL;
                goto cleanup;
index 9b8f21a..f346816 100644 (file)
@@ -19,9 +19,6 @@ static const char *__doc__ =
 #include <time.h>
 #include <linux/limits.h>
 
-#define __must_check
-#include <linux/err.h>
-
 #include <arpa/inet.h>
 #include <linux/if_link.h>
 
@@ -622,7 +619,7 @@ static struct bpf_link * attach_tp(struct bpf_object *obj,
        }
 
        link = bpf_program__attach_tracepoint(prog, tp_category, tp_name);
-       if (IS_ERR(link))
+       if (libbpf_get_error(link))
                exit(EXIT_FAIL_BPF);
 
        return link;