diff options
| author | Maciej Fijalkowski <[email protected]> | 2019-02-01 21:42:26 +0000 |
|---|---|---|
| committer | Daniel Borkmann <[email protected]> | 2019-02-01 22:37:51 +0000 |
| commit | 6a5457618f62147aeac706d26ff28e0e57a324e3 (patch) | |
| tree | 245cfdab823957b6dcdc0cdf2ad8432be72d9857 /samples/bpf/xdp_router_ipv4_user.c | |
| parent | samples/bpf: Convert XDP samples to libbpf usage (diff) | |
| download | kernel-6a5457618f62147aeac706d26ff28e0e57a324e3.tar.gz kernel-6a5457618f62147aeac706d26ff28e0e57a324e3.zip | |
samples/bpf: Extend RLIMIT_MEMLOCK for xdp_{sample_pkts, router_ipv4}
There is a common problem with xdp samples that happens when user wants
to run a particular sample and some bpf program is already loaded. The
default 64kb RLIMIT_MEMLOCK resource limit will cause a following error
(assuming that xdp sample that is failing was converted to libbpf
usage):
libbpf: Error in bpf_object__probe_name():Operation not permitted(1).
Couldn't load basic 'r0 = 0' BPF program.
libbpf: failed to load object './xdp_sample_pkts_kern.o'
Fix it in xdp_sample_pkts and xdp_router_ipv4 by setting RLIMIT_MEMLOCK
to RLIM_INFINITY.
Signed-off-by: Maciej Fijalkowski <[email protected]>
Reviewed-by: Jakub Kicinski <[email protected]>
Acked-by: Jesper Dangaard Brouer <[email protected]>
Acked-by: John Fastabend <[email protected]>
Signed-off-by: Daniel Borkmann <[email protected]>
Diffstat (limited to 'samples/bpf/xdp_router_ipv4_user.c')
| -rw-r--r-- | samples/bpf/xdp_router_ipv4_user.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/samples/bpf/xdp_router_ipv4_user.c b/samples/bpf/xdp_router_ipv4_user.c index cea2306f5ab7..c63c6beec7d6 100644 --- a/samples/bpf/xdp_router_ipv4_user.c +++ b/samples/bpf/xdp_router_ipv4_user.c @@ -25,6 +25,7 @@ #include <sys/syscall.h> #include "bpf_util.h" #include "bpf/libbpf.h" +#include <sys/resource.h> int sock, sock_arp, flags = 0; static int total_ifindex; @@ -609,6 +610,7 @@ cleanup: int main(int ac, char **argv) { + struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; struct bpf_prog_load_attr prog_load_attr = { .prog_type = BPF_PROG_TYPE_XDP, }; @@ -635,6 +637,11 @@ int main(int ac, char **argv) ifname_list = (argv + 1); } + if (setrlimit(RLIMIT_MEMLOCK, &r)) { + perror("setrlimit(RLIMIT_MEMLOCK)"); + return 1; + } + if (bpf_prog_load_xattr(&prog_load_attr, &obj, &prog_fd)) return 1; |
