diff options
author | Yonghong Song <yhs@fb.com> | 2018-02-13 10:35:05 -0800 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2018-02-13 18:02:02 -0800 |
commit | 615a9474985799c8b48645b8e95a9b9f0691f56a (patch) | |
tree | c570e610ad6b8d6d522d881e0012ffb39e20bac6 /tools/testing/selftests/bpf/test_tcpbpf_user.c | |
parent | 41757dcb0c3d8446c549e55163c9fd9561fcf599 (diff) | |
download | linux-615a9474985799c8b48645b8e95a9b9f0691f56a.tar.gz linux-615a9474985799c8b48645b8e95a9b9f0691f56a.tar.bz2 linux-615a9474985799c8b48645b8e95a9b9f0691f56a.zip |
tools/bpf: adjust rlimit RLIMIT_MEMLOCK for test_tcpbpf_user
The default rlimit RLIMIT_MEMLOCK is 64KB. In certain cases,
e.g. in a test machine mimicking our production system, this test may
fail due to unable to charge the required memory for map creation:
# ./test_tcpbpf_user
libbpf: failed to create map (name: 'global_map'): Operation not permitted
libbpf: failed to load object 'test_tcpbpf_kern.o'
FAILED: load_bpf_file failed for: test_tcpbpf_kern.o
Changing the default rlimit RLIMIT_MEMLOCK to unlimited makes
the test always pass.
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/testing/selftests/bpf/test_tcpbpf_user.c')
-rw-r--r-- | tools/testing/selftests/bpf/test_tcpbpf_user.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/test_tcpbpf_user.c b/tools/testing/selftests/bpf/test_tcpbpf_user.c index 95a370f3d378..5d73db416460 100644 --- a/tools/testing/selftests/bpf/test_tcpbpf_user.c +++ b/tools/testing/selftests/bpf/test_tcpbpf_user.c @@ -11,6 +11,8 @@ #include <linux/ptrace.h> #include <linux/bpf.h> #include <sys/ioctl.h> +#include <sys/time.h> +#include <sys/resource.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> @@ -42,6 +44,7 @@ static int bpf_find_map(const char *test, struct bpf_object *obj, int main(int argc, char **argv) { + struct rlimit limit = { RLIM_INFINITY, RLIM_INFINITY }; const char *file = "test_tcpbpf_kern.o"; struct tcpbpf_globals g = {0}; int cg_fd, prog_fd, map_fd; @@ -54,6 +57,9 @@ int main(int argc, char **argv) int pid; int rv; + if (setrlimit(RLIMIT_MEMLOCK, &limit) < 0) + perror("Unable to lift memlock rlimit"); + if (argc > 1 && strcmp(argv[1], "-d") == 0) debug_flag = true; |