samples/bpf: xdp_monitor increase memory rlimit
authorJesper Dangaard Brouer <brouer@redhat.com>
Fri, 6 Oct 2017 08:41:51 +0000 (10:41 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Oct 2017 17:04:36 +0000 (10:04 -0700)
Other concurrent running programs, like perf or the XDP program what
needed to be monitored, might take up part of the max locked memory
limit.  Thus, the xdp_monitor tool have to set the RLIMIT_MEMLOCK to
RLIM_INFINITY, as it cannot determine a more sane limit.

Using the man exit(3) specified EXIT_FAILURE return exit code, and
correct other users too.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
samples/bpf/xdp_monitor_user.c

index 97c3456c11b2bf6417f146b83d295ff40a121290..eaba165b35492e9a8d683762920833ee78e04f81 100644 (file)
@@ -20,6 +20,7 @@ static const char *__doc_err_only__=
 #include <unistd.h>
 #include <locale.h>
 
+#include <sys/resource.h>
 #include <getopt.h>
 #include <net/if.h>
 #include <time.h>
@@ -295,6 +296,7 @@ static void print_bpf_prog_info(void)
 
 int main(int argc, char **argv)
 {
+       struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
        int longindex = 0, opt;
        int ret = EXIT_SUCCESS;
        char bpf_obj_file[256];
@@ -325,13 +327,18 @@ int main(int argc, char **argv)
                }
        }
 
+       if (setrlimit(RLIMIT_MEMLOCK, &r)) {
+               perror("setrlimit(RLIMIT_MEMLOCK)");
+               return EXIT_FAILURE;
+       }
+
        if (load_bpf_file(bpf_obj_file)) {
                printf("ERROR - bpf_log_buf: %s", bpf_log_buf);
-               return 1;
+               return EXIT_FAILURE;
        }
        if (!prog_fd[0]) {
                printf("ERROR - load_bpf_file: %s\n", strerror(errno));
-               return 1;
+               return EXIT_FAILURE;
        }
 
        if (debug) {