perf tools: Move libbpf init in libbpf_init function
[linux-2.6-microblaze.git] / tools / perf / util / bpf-loader.c
index b72cef1..f8ad581 100644 (file)
@@ -99,16 +99,26 @@ static int bpf_perf_object__add(struct bpf_object *obj)
        return perf_obj ? 0 : -ENOMEM;
 }
 
+static int libbpf_init(void)
+{
+       if (libbpf_initialized)
+               return 0;
+
+       libbpf_set_print(libbpf_perf_print);
+       libbpf_initialized = true;
+       return 0;
+}
+
 struct bpf_object *
 bpf__prepare_load_buffer(void *obj_buf, size_t obj_buf_sz, const char *name)
 {
        LIBBPF_OPTS(bpf_object_open_opts, opts, .object_name = name);
        struct bpf_object *obj;
+       int err;
 
-       if (!libbpf_initialized) {
-               libbpf_set_print(libbpf_perf_print);
-               libbpf_initialized = true;
-       }
+       err = libbpf_init();
+       if (err)
+               return ERR_PTR(err);
 
        obj = bpf_object__open_mem(obj_buf, obj_buf_sz, &opts);
        if (IS_ERR_OR_NULL(obj)) {
@@ -135,14 +145,13 @@ struct bpf_object *bpf__prepare_load(const char *filename, bool source)
 {
        LIBBPF_OPTS(bpf_object_open_opts, opts, .object_name = filename);
        struct bpf_object *obj;
+       int err;
 
-       if (!libbpf_initialized) {
-               libbpf_set_print(libbpf_perf_print);
-               libbpf_initialized = true;
-       }
+       err = libbpf_init();
+       if (err)
+               return ERR_PTR(err);
 
        if (source) {
-               int err;
                void *obj_buf;
                size_t obj_buf_sz;