selftests/bpf: Use libbpf 1.0 API mode instead of RLIMIT_MEMLOCK
authorYafang Shao <laoar.shao@gmail.com>
Sat, 9 Apr 2022 12:59:56 +0000 (12:59 +0000)
committerAndrii Nakryiko <andrii@kernel.org>
Mon, 11 Apr 2022 03:17:16 +0000 (20:17 -0700)
We have switched to memcg-based memory accouting and thus the rlimit is
not needed any more. LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK was introduced in
libbpf for backward compatibility, so we can use it instead now. After
this change, the header tools/testing/selftests/bpf/bpf_rlimit.h can be
removed.

This patch also removes the useless header sys/resource.h from many files
in tools/testing/selftests/bpf/.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220409125958.92629-3-laoar.shao@gmail.com
21 files changed:
tools/testing/selftests/bpf/bench.c
tools/testing/selftests/bpf/bpf_rlimit.h [deleted file]
tools/testing/selftests/bpf/flow_dissector_load.c
tools/testing/selftests/bpf/get_cgroup_id_user.c
tools/testing/selftests/bpf/prog_tests/btf.c
tools/testing/selftests/bpf/test_cgroup_storage.c
tools/testing/selftests/bpf/test_dev_cgroup.c
tools/testing/selftests/bpf/test_lpm_map.c
tools/testing/selftests/bpf/test_lru_map.c
tools/testing/selftests/bpf/test_skb_cgroup_id_user.c
tools/testing/selftests/bpf/test_sock.c
tools/testing/selftests/bpf/test_sock_addr.c
tools/testing/selftests/bpf/test_sockmap.c
tools/testing/selftests/bpf/test_sysctl.c
tools/testing/selftests/bpf/test_tag.c
tools/testing/selftests/bpf/test_tcp_check_syncookie_user.c
tools/testing/selftests/bpf/test_tcpnotify_user.c
tools/testing/selftests/bpf/test_verifier_log.c
tools/testing/selftests/bpf/xdp_redirect_multi.c
tools/testing/selftests/bpf/xdping.c
tools/testing/selftests/bpf/xdpxceiver.c

index f973320..f061cc2 100644 (file)
@@ -8,7 +8,6 @@
 #include <fcntl.h>
 #include <pthread.h>
 #include <sys/sysinfo.h>
-#include <sys/resource.h>
 #include <signal.h>
 #include "bench.h"
 #include "testing_helpers.h"
diff --git a/tools/testing/selftests/bpf/bpf_rlimit.h b/tools/testing/selftests/bpf/bpf_rlimit.h
deleted file mode 100644 (file)
index 9dac9b3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <sys/resource.h>
-#include <stdio.h>
-
-static  __attribute__((constructor)) void bpf_rlimit_ctor(void)
-{
-       struct rlimit rlim_old, rlim_new = {
-               .rlim_cur       = RLIM_INFINITY,
-               .rlim_max       = RLIM_INFINITY,
-       };
-
-       getrlimit(RLIMIT_MEMLOCK, &rlim_old);
-       /* For the sake of running the test cases, we temporarily
-        * set rlimit to infinity in order for kernel to focus on
-        * errors from actual test cases and not getting noise
-        * from hitting memlock limits. The limit is on per-process
-        * basis and not a global one, hence destructor not really
-        * needed here.
-        */
-       if (setrlimit(RLIMIT_MEMLOCK, &rlim_new) < 0) {
-               perror("Unable to lift memlock rlimit");
-               /* Trying out lower limit, but expect potential test
-                * case failures from this!
-                */
-               rlim_new.rlim_cur = rlim_old.rlim_cur + (1UL << 20);
-               rlim_new.rlim_max = rlim_old.rlim_max + (1UL << 20);
-               setrlimit(RLIMIT_MEMLOCK, &rlim_new);
-       }
-}
index 87fd1aa..c8be640 100644 (file)
@@ -11,7 +11,6 @@
 #include <bpf/bpf.h>
 #include <bpf/libbpf.h>
 
-#include "bpf_rlimit.h"
 #include "flow_dissector_load.h"
 
 const char *cfg_pin_path = "/sys/fs/bpf/flow_dissector";
@@ -25,9 +24,8 @@ static void load_and_attach_program(void)
        int prog_fd, ret;
        struct bpf_object *obj;
 
-       ret = libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
-       if (ret)
-               error(1, 0, "failed to enable libbpf strict mode: %d", ret);
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 
        ret = bpf_flow_load(&obj, cfg_path_name, cfg_prog_name,
                            cfg_map_name, NULL, &prog_fd, NULL);
index 3a7b82b..e021cc6 100644 (file)
@@ -20,7 +20,6 @@
 
 #include "cgroup_helpers.h"
 #include "testing_helpers.h"
-#include "bpf_rlimit.h"
 
 #define CHECK(condition, tag, format...) ({            \
        int __ret = !!(condition);                      \
@@ -67,6 +66,9 @@ int main(int argc, char **argv)
        if (CHECK(cgroup_fd < 0, "cgroup_setup_and_join", "err %d errno %d\n", cgroup_fd, errno))
                return 1;
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        err = bpf_prog_test_load(file, BPF_PROG_TYPE_TRACEPOINT, &obj, &prog_fd);
        if (CHECK(err, "bpf_prog_test_load", "err %d errno %d\n", err, errno))
                goto cleanup_cgroup_env;
index ec82356..84aae63 100644 (file)
@@ -8,7 +8,6 @@
 #include <linux/filter.h>
 #include <linux/unistd.h>
 #include <bpf/bpf.h>
-#include <sys/resource.h>
 #include <libelf.h>
 #include <gelf.h>
 #include <string.h>
index 2ffa081..0861ea6 100644 (file)
@@ -6,7 +6,6 @@
 #include <stdlib.h>
 #include <sys/sysinfo.h>
 
-#include "bpf_rlimit.h"
 #include "bpf_util.h"
 #include "cgroup_helpers.h"
 #include "testing_helpers.h"
@@ -52,6 +51,9 @@ int main(int argc, char **argv)
                goto err;
        }
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        map_fd = bpf_map_create(BPF_MAP_TYPE_CGROUP_STORAGE, NULL, sizeof(key),
                                sizeof(value), 0, NULL);
        if (map_fd < 0) {
index c299d34..7886265 100644 (file)
@@ -15,7 +15,6 @@
 
 #include "cgroup_helpers.h"
 #include "testing_helpers.h"
-#include "bpf_rlimit.h"
 
 #define DEV_CGROUP_PROG "./dev_cgroup.o"
 
@@ -28,6 +27,9 @@ int main(int argc, char **argv)
        int prog_fd, cgroup_fd;
        __u32 prog_cnt;
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        if (bpf_prog_test_load(DEV_CGROUP_PROG, BPF_PROG_TYPE_CGROUP_DEVICE,
                          &obj, &prog_fd)) {
                printf("Failed to load DEV_CGROUP program\n");
index aa29461..789c974 100644 (file)
@@ -26,7 +26,6 @@
 #include <bpf/bpf.h>
 
 #include "bpf_util.h"
-#include "bpf_rlimit.h"
 
 struct tlpm_node {
        struct tlpm_node *next;
@@ -791,6 +790,9 @@ int main(void)
        /* we want predictable, pseudo random tests */
        srand(0xf00ba1);
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        test_lpm_basic();
        test_lpm_order();
 
index 563bbe1..a6aa2d1 100644 (file)
@@ -18,7 +18,6 @@
 #include <bpf/libbpf.h>
 
 #include "bpf_util.h"
-#include "bpf_rlimit.h"
 #include "../../../include/linux/filter.h"
 
 #define LOCAL_FREE_TARGET      (128)
@@ -878,6 +877,9 @@ int main(int argc, char **argv)
        assert(nr_cpus != -1);
        printf("nr_cpus:%d\n\n", nr_cpus);
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        for (f = 0; f < ARRAY_SIZE(map_flags); f++) {
                unsigned int tgt_free = (map_flags[f] & BPF_F_NO_COMMON_LRU) ?
                        PERCPU_FREE_TARGET : LOCAL_FREE_TARGET;
index 4a64306..3256de3 100644 (file)
@@ -15,7 +15,6 @@
 #include <bpf/bpf.h>
 #include <bpf/libbpf.h>
 
-#include "bpf_rlimit.h"
 #include "cgroup_helpers.h"
 
 #define CGROUP_PATH            "/skb_cgroup_test"
@@ -160,6 +159,9 @@ int main(int argc, char **argv)
                exit(EXIT_FAILURE);
        }
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        cgfd = cgroup_setup_and_join(CGROUP_PATH);
        if (cgfd < 0)
                goto err;
index fe10f81..6c44940 100644 (file)
@@ -14,7 +14,6 @@
 
 #include "cgroup_helpers.h"
 #include <bpf/bpf_endian.h>
-#include "bpf_rlimit.h"
 #include "bpf_util.h"
 
 #define CG_PATH                "/foo"
@@ -541,6 +540,9 @@ int main(int argc, char **argv)
        if (cgfd < 0)
                goto err;
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        if (run_tests(cgfd))
                goto err;
 
index f3d5d7a..458564f 100644 (file)
@@ -19,7 +19,6 @@
 #include <bpf/libbpf.h>
 
 #include "cgroup_helpers.h"
-#include "bpf_rlimit.h"
 #include "bpf_util.h"
 
 #ifndef ENOTSUPP
@@ -1418,6 +1417,9 @@ int main(int argc, char **argv)
        if (cgfd < 0)
                goto err;
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        if (run_tests(cgfd))
                goto err;
 
index dfb4f5c..0fbaccd 100644 (file)
@@ -18,7 +18,6 @@
 #include <sched.h>
 
 #include <sys/time.h>
-#include <sys/resource.h>
 #include <sys/types.h>
 #include <sys/sendfile.h>
 
@@ -37,7 +36,6 @@
 #include <bpf/libbpf.h>
 
 #include "bpf_util.h"
-#include "bpf_rlimit.h"
 #include "cgroup_helpers.h"
 
 int running;
@@ -2017,6 +2015,9 @@ int main(int argc, char **argv)
                cg_created = 1;
        }
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        if (test == SELFTESTS) {
                err = test_selftest(cg_fd, &options);
                goto out;
index 4f6cf83..5bae25c 100644 (file)
@@ -14,7 +14,6 @@
 #include <bpf/libbpf.h>
 
 #include <bpf/bpf_endian.h>
-#include "bpf_rlimit.h"
 #include "bpf_util.h"
 #include "cgroup_helpers.h"
 #include "testing_helpers.h"
@@ -1618,6 +1617,9 @@ int main(int argc, char **argv)
        if (cgfd < 0)
                goto err;
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        if (run_tests(cgfd))
                goto err;
 
index 0851c42..5546b05 100644 (file)
@@ -20,7 +20,6 @@
 #include <bpf/bpf.h>
 
 #include "../../../include/linux/filter.h"
-#include "bpf_rlimit.h"
 #include "testing_helpers.h"
 
 static struct bpf_insn prog[BPF_MAXINSNS];
@@ -189,6 +188,9 @@ int main(void)
        uint32_t tests = 0;
        int i, fd_map;
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        fd_map = bpf_map_create(BPF_MAP_TYPE_HASH, NULL, sizeof(int),
                                sizeof(int), 1, &opts);
        assert(fd_map > 0);
index e7775d3..5c8ef06 100644 (file)
@@ -15,7 +15,6 @@
 #include <bpf/bpf.h>
 #include <bpf/libbpf.h>
 
-#include "bpf_rlimit.h"
 #include "cgroup_helpers.h"
 
 static int start_server(const struct sockaddr *addr, socklen_t len, bool dual)
@@ -235,6 +234,9 @@ int main(int argc, char **argv)
                exit(1);
        }
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        results = get_map_fd_by_prog_id(atoi(argv[1]), &xdp);
        if (results < 0) {
                log_err("Can't get map");
index 4c51147..8284db8 100644 (file)
@@ -19,7 +19,6 @@
 #include <linux/perf_event.h>
 #include <linux/err.h>
 
-#include "bpf_rlimit.h"
 #include "bpf_util.h"
 #include "cgroup_helpers.h"
 
index 8d6918c..70feda9 100644 (file)
@@ -11,8 +11,6 @@
 
 #include <bpf/bpf.h>
 
-#include "bpf_rlimit.h"
-
 #define LOG_SIZE (1 << 20)
 
 #define err(str...)    printf("ERROR: " str)
@@ -141,6 +139,9 @@ int main(int argc, char **argv)
 
        memset(log, 1, LOG_SIZE);
 
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
+
        /* Test incorrect attr */
        printf("Test log_level 0...\n");
        test_log_bad(log, LOG_SIZE, 0);
index aaedbf4..c03b3a7 100644 (file)
@@ -10,7 +10,6 @@
 #include <net/if.h>
 #include <unistd.h>
 #include <libgen.h>
-#include <sys/resource.h>
 #include <sys/ioctl.h>
 #include <sys/types.h>
 #include <sys/socket.h>
index c567856..5b6f977 100644 (file)
@@ -12,7 +12,6 @@
 #include <string.h>
 #include <unistd.h>
 #include <libgen.h>
-#include <sys/resource.h>
 #include <net/if.h>
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -89,7 +88,6 @@ int main(int argc, char **argv)
 {
        __u32 mode_flags = XDP_FLAGS_DRV_MODE | XDP_FLAGS_SKB_MODE;
        struct addrinfo *a, hints = { .ai_family = AF_INET };
-       struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
        __u16 count = XDPING_DEFAULT_COUNT;
        struct pinginfo pinginfo = { 0 };
        const char *optstr = "c:I:NsS";
@@ -167,10 +165,8 @@ int main(int argc, char **argv)
                freeaddrinfo(a);
        }
 
-       if (setrlimit(RLIMIT_MEMLOCK, &r)) {
-               perror("setrlimit(RLIMIT_MEMLOCK)");
-               return 1;
-       }
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 
        snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
 
index 5f8296d..cfcb031 100644 (file)
@@ -90,7 +90,6 @@
 #include <string.h>
 #include <stddef.h>
 #include <sys/mman.h>
-#include <sys/resource.h>
 #include <sys/types.h>
 #include <sys/queue.h>
 #include <time.h>
@@ -1448,14 +1447,13 @@ static void ifobject_delete(struct ifobject *ifobj)
 
 int main(int argc, char **argv)
 {
-       struct rlimit _rlim = { RLIM_INFINITY, RLIM_INFINITY };
        struct pkt_stream *pkt_stream_default;
        struct ifobject *ifobj_tx, *ifobj_rx;
        struct test_spec test;
        u32 i, j;
 
-       if (setrlimit(RLIMIT_MEMLOCK, &_rlim))
-               exit_with_error(errno);
+       /* Use libbpf 1.0 API mode */
+       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 
        ifobj_tx = ifobject_create();
        if (!ifobj_tx)