From ce668aa3f6b79ca505d1282ee4ba2b3c26fb126c Mon Sep 17 00:00:00 2001 From: Chen Yahui Date: Fri, 16 Sep 2022 21:07:57 +0800 Subject: af_xdp: change RLIMIT_MEMLOCK before load bpf program default RLIMIT_MEMLOCK is 64. if we use multi af_xdp interfaces or load complex bpf program, libbpf will return permission error. root cause is default 64 is not large enough. So we change it before load bpf program. Type: fix Change-Id: Ia6aed19c9256c498cf1155586a54a32b3f444105 Signed-off-by: Chen Yahui --- src/plugins/af_xdp/device.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/plugins') diff --git a/src/plugins/af_xdp/device.c b/src/plugins/af_xdp/device.c index a571155a707..cccbf69cfdc 100644 --- a/src/plugins/af_xdp/device.c +++ b/src/plugins/af_xdp/device.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -197,6 +198,12 @@ static int af_xdp_load_program (af_xdp_create_if_args_t * args, af_xdp_device_t * ad) { int fd; + struct rlimit r = { RLIM_INFINITY, RLIM_INFINITY }; + + if (setrlimit (RLIMIT_MEMLOCK, &r)) + af_xdp_log (VLIB_LOG_LEVEL_WARNING, ad, + "setrlimit(%s) failed: %s (errno %d)", ad->linux_ifname, + strerror (errno), errno); ad->linux_ifindex = if_nametoindex (ad->linux_ifname); if (!ad->linux_ifindex) -- cgit 1.2.3-korg