Commit 33fc250c authored by Andrii Nakryiko's avatar Andrii Nakryiko

Merge branch 'bpf: RLIMIT_MEMLOCK cleanups'

Yafang Shao says:

====================

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.

This patchset cleanups the usage of RLIMIT_MEMLOCK in tools/bpf/,
tools/testing/selftests/bpf and samples/bpf. The file
tools/testing/selftests/bpf/bpf_rlimit.h is removed. The included header
sys/resource.h is removed from many files as it is useless in these files.

- v4: Squash patches and use customary subject prefixes. (Andrii)
- v3: Get rid of bpf_rlimit.h and fix some typos (Andrii)
- v2: Use libbpf_set_strict_mode instead. (Andrii)
- v1: https://lore.kernel.org/bpf/20220320060815.7716-2-laoar.shao@gmail.com/
====================
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
parents d252a4a4 451b5fbc
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <assert.h> #include <assert.h>
#include <sys/resource.h>
#include <sys/time.h> #include <sys/time.h>
#include <unistd.h> #include <unistd.h>
#include <errno.h> #include <errno.h>
...@@ -46,7 +45,6 @@ ...@@ -46,7 +45,6 @@
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <getopt.h> #include <getopt.h>
#include "bpf_rlimit.h"
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
#include "hbm.h" #include "hbm.h"
#include "bpf_util.h" #include "bpf_util.h"
...@@ -510,5 +508,8 @@ int main(int argc, char **argv) ...@@ -510,5 +508,8 @@ int main(int argc, char **argv)
prog = argv[optind]; prog = argv[optind];
printf("HBM prog: %s\n", prog != NULL ? prog : "NULL"); printf("HBM prog: %s\n", prog != NULL ? prog : "NULL");
/* Use libbpf 1.0 API mode */
libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
return run_bpf_prog(prog, cg_id); return run_bpf_prog(prog, cg_id);
} }
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <limits.h> #include <limits.h>
#include <sys/resource.h>
#include <getopt.h> #include <getopt.h>
#include <net/if.h> #include <net/if.h>
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <signal.h> #include <signal.h>
#include <string.h> #include <string.h>
#include <time.h> #include <time.h>
#include <sys/resource.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <errno.h> #include <errno.h>
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <errno.h> #include <errno.h>
#include <stdbool.h> #include <stdbool.h>
#include <sys/resource.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include "trace_helpers.h" #include "trace_helpers.h"
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "sock_example.h" #include "sock_example.h"
#include <unistd.h> #include <unistd.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <sys/resource.h>
struct pair { struct pair {
__u64 packets; __u64 packets;
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#include "sock_example.h" #include "sock_example.h"
#include <unistd.h> #include <unistd.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <sys/resource.h>
struct flow_key_record { struct flow_key_record {
__be32 src; __be32 src;
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include <sys/resource.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include "trace_helpers.h" #include "trace_helpers.h"
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <string.h> #include <string.h>
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <errno.h> #include <errno.h>
#include <sys/resource.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <fcntl.h> #include <fcntl.h>
#include <linux/bpf.h> #include <linux/bpf.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/resource.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <linux/perf_event.h> #include <linux/perf_event.h>
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <sched.h> #include <sched.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/resource.h>
#include <fcntl.h> #include <fcntl.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h> #include <time.h>
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
/* /*
* Copyright (c) 2017 Facebook * Copyright (c) 2017 Facebook
*/ */
#include <sys/resource.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <stdint.h> #include <stdint.h>
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include <linux/bpf.h> #include <linux/bpf.h>
#include <string.h> #include <string.h>
#include <time.h> #include <time.h>
#include <sys/resource.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <signal.h> #include <signal.h>
#include <string.h> #include <string.h>
#include <sys/resource.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include <unistd.h> #include <unistd.h>
#include <stdbool.h> #include <stdbool.h>
#include <string.h> #include <string.h>
#include <sys/resource.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <stdbool.h> #include <stdbool.h>
#include <string.h> #include <string.h>
#include <time.h> #include <time.h>
#include <sys/resource.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include <sys/prctl.h> #include <sys/prctl.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <sys/resource.h>
#include "trace_helpers.h" #include "trace_helpers.h"
#ifdef __mips__ #ifdef __mips__
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/resource.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h> #include <sys/wait.h>
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <libgen.h> #include <libgen.h>
#include <sys/resource.h>
#include <net/if.h> #include <net/if.h>
#include "bpf_util.h" #include "bpf_util.h"
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <net/if.h> #include <net/if.h>
#include <sys/resource.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <netinet/ether.h> #include <netinet/ether.h>
#include <unistd.h> #include <unistd.h>
......
...@@ -17,7 +17,6 @@ static const char *__doc_err_only__= ...@@ -17,7 +17,6 @@ static const char *__doc_err_only__=
#include <ctype.h> #include <ctype.h>
#include <unistd.h> #include <unistd.h>
#include <locale.h> #include <locale.h>
#include <sys/resource.h>
#include <getopt.h> #include <getopt.h>
#include <net/if.h> #include <net/if.h>
#include <time.h> #include <time.h>
......
...@@ -21,7 +21,6 @@ static const char *__doc__ = ...@@ -21,7 +21,6 @@ static const char *__doc__ =
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <locale.h> #include <locale.h>
#include <sys/resource.h>
#include <sys/sysinfo.h> #include <sys/sysinfo.h>
#include <getopt.h> #include <getopt.h>
#include <net/if.h> #include <net/if.h>
......
...@@ -15,7 +15,6 @@ static const char *__doc__ = ...@@ -15,7 +15,6 @@ static const char *__doc__ =
#include <net/if.h> #include <net/if.h>
#include <unistd.h> #include <unistd.h>
#include <libgen.h> #include <libgen.h>
#include <sys/resource.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
......
...@@ -18,7 +18,6 @@ static const char *__doc__ = ...@@ -18,7 +18,6 @@ static const char *__doc__ =
#include <unistd.h> #include <unistd.h>
#include <libgen.h> #include <libgen.h>
#include <getopt.h> #include <getopt.h>
#include <sys/resource.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include "bpf_util.h" #include "bpf_util.h"
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <sys/syscall.h> #include <sys/syscall.h>
#include "bpf_util.h" #include "bpf_util.h"
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <sys/resource.h>
#include <libgen.h> #include <libgen.h>
#include <getopt.h> #include <getopt.h>
#include <pthread.h> #include <pthread.h>
......
...@@ -14,7 +14,6 @@ static const char *__doc__ = " XDP RX-queue info extract example\n\n" ...@@ -14,7 +14,6 @@ static const char *__doc__ = " XDP RX-queue info extract example\n\n"
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <locale.h> #include <locale.h>
#include <sys/resource.h>
#include <getopt.h> #include <getopt.h>
#include <net/if.h> #include <net/if.h>
#include <time.h> #include <time.h>
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <signal.h> #include <signal.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <sys/resource.h>
#include <libgen.h> #include <libgen.h>
#include <linux/if_link.h> #include <linux/if_link.h>
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <string.h> #include <string.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/resource.h>
#include <sys/signalfd.h> #include <sys/signalfd.h>
#include <sys/sysinfo.h> #include <sys/sysinfo.h>
#include <sys/timerfd.h> #include <sys/timerfd.h>
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <net/if.h> #include <net/if.h>
#include <sys/resource.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <netinet/ether.h> #include <netinet/ether.h>
#include <unistd.h> #include <unistd.h>
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <string.h> #include <string.h>
#include <sys/capability.h> #include <sys/capability.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/resource.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/un.h> #include <sys/un.h>
...@@ -1886,7 +1885,6 @@ int main(int argc, char **argv) ...@@ -1886,7 +1885,6 @@ int main(int argc, char **argv)
{ {
struct __user_cap_header_struct hdr = { _LINUX_CAPABILITY_VERSION_3, 0 }; struct __user_cap_header_struct hdr = { _LINUX_CAPABILITY_VERSION_3, 0 };
struct __user_cap_data_struct data[2] = { { 0 } }; struct __user_cap_data_struct data[2] = { { 0 } };
struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
bool rx = false, tx = false; bool rx = false, tx = false;
struct sched_param schparam; struct sched_param schparam;
struct xsk_umem_info *umem; struct xsk_umem_info *umem;
...@@ -1917,11 +1915,8 @@ int main(int argc, char **argv) ...@@ -1917,11 +1915,8 @@ int main(int argc, char **argv)
data[1].effective, data[1].inheritable, data[1].permitted); data[1].effective, data[1].inheritable, data[1].permitted);
} }
} else { } else {
if (setrlimit(RLIMIT_MEMLOCK, &r)) { /* Use libbpf 1.0 API mode */
fprintf(stderr, "ERROR: setrlimit(RLIMIT_MEMLOCK) \"%s\"\n", libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
strerror(errno));
exit(EXIT_FAILURE);
}
if (opt_num_xsks > 1) if (opt_num_xsks > 1)
load_xdp_program(argv, &obj); load_xdp_program(argv, &obj);
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/resource.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/types.h> #include <sys/types.h>
#include <time.h> #include <time.h>
...@@ -131,7 +130,6 @@ static struct bpool * ...@@ -131,7 +130,6 @@ static struct bpool *
bpool_init(struct bpool_params *params, bpool_init(struct bpool_params *params,
struct xsk_umem_config *umem_cfg) struct xsk_umem_config *umem_cfg)
{ {
struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
u64 n_slabs, n_slabs_reserved, n_buffers, n_buffers_reserved; u64 n_slabs, n_slabs_reserved, n_buffers, n_buffers_reserved;
u64 slabs_size, slabs_reserved_size; u64 slabs_size, slabs_reserved_size;
u64 buffers_size, buffers_reserved_size; u64 buffers_size, buffers_reserved_size;
...@@ -140,9 +138,8 @@ bpool_init(struct bpool_params *params, ...@@ -140,9 +138,8 @@ bpool_init(struct bpool_params *params,
u8 *p; u8 *p;
int status; int status;
/* mmap prep. */ /* Use libbpf 1.0 API mode */
if (setrlimit(RLIMIT_MEMLOCK, &r)) libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
return NULL;
/* bpool internals dimensioning. */ /* bpool internals dimensioning. */
n_slabs = (params->n_buffers + params->n_buffers_per_slab - 1) / n_slabs = (params->n_buffers + params->n_buffers_per_slab - 1) /
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
#include <linux/magic.h> #include <linux/magic.h>
#include <net/if.h> #include <net/if.h>
#include <sys/mount.h> #include <sys/mount.h>
#include <sys/resource.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/vfs.h> #include <sys/vfs.h>
...@@ -119,13 +118,6 @@ static bool is_bpffs(char *path) ...@@ -119,13 +118,6 @@ static bool is_bpffs(char *path)
return (unsigned long)st_fs.f_type == BPF_FS_MAGIC; return (unsigned long)st_fs.f_type == BPF_FS_MAGIC;
} }
void set_max_rlimit(void)
{
struct rlimit rinf = { RLIM_INFINITY, RLIM_INFINITY };
setrlimit(RLIMIT_MEMLOCK, &rinf);
}
static int static int
mnt_fs(const char *target, const char *type, char *buff, size_t bufflen) mnt_fs(const char *target, const char *type, char *buff, size_t bufflen)
{ {
......
...@@ -1136,8 +1136,6 @@ static int do_probe(int argc, char **argv) ...@@ -1136,8 +1136,6 @@ static int do_probe(int argc, char **argv)
__u32 ifindex = 0; __u32 ifindex = 0;
char *ifname; char *ifname;
set_max_rlimit();
while (argc) { while (argc) {
if (is_prefix(*argv, "kernel")) { if (is_prefix(*argv, "kernel")) {
if (target != COMPONENT_UNSPEC) { if (target != COMPONENT_UNSPEC) {
......
...@@ -507,9 +507,9 @@ int main(int argc, char **argv) ...@@ -507,9 +507,9 @@ int main(int argc, char **argv)
* It will still be rejected if users use LIBBPF_STRICT_ALL * It will still be rejected if users use LIBBPF_STRICT_ALL
* mode for loading generated skeleton. * mode for loading generated skeleton.
*/ */
ret = libbpf_set_strict_mode(LIBBPF_STRICT_ALL & ~LIBBPF_STRICT_MAP_DEFINITIONS); libbpf_set_strict_mode(LIBBPF_STRICT_ALL & ~LIBBPF_STRICT_MAP_DEFINITIONS);
if (ret) } else {
p_err("failed to enable libbpf strict mode: %d", ret); libbpf_set_strict_mode(LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK);
} }
argc -= optind; argc -= optind;
......
...@@ -102,8 +102,6 @@ int detect_common_prefix(const char *arg, ...); ...@@ -102,8 +102,6 @@ int detect_common_prefix(const char *arg, ...);
void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep); void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep);
void usage(void) __noreturn; void usage(void) __noreturn;
void set_max_rlimit(void);
int mount_tracefs(const char *target); int mount_tracefs(const char *target);
struct obj_ref { struct obj_ref {
......
...@@ -1342,8 +1342,6 @@ static int do_create(int argc, char **argv) ...@@ -1342,8 +1342,6 @@ static int do_create(int argc, char **argv)
goto exit; goto exit;
} }
set_max_rlimit();
fd = bpf_map_create(map_type, map_name, key_size, value_size, max_entries, &attr); fd = bpf_map_create(map_type, map_name, key_size, value_size, max_entries, &attr);
if (fd < 0) { if (fd < 0) {
p_err("map create failed: %s", strerror(errno)); p_err("map create failed: %s", strerror(errno));
......
...@@ -108,7 +108,6 @@ int build_obj_refs_table(struct hashmap **map, enum bpf_obj_type type) ...@@ -108,7 +108,6 @@ int build_obj_refs_table(struct hashmap **map, enum bpf_obj_type type)
p_err("failed to create hashmap for PID references"); p_err("failed to create hashmap for PID references");
return -1; return -1;
} }
set_max_rlimit();
skel = pid_iter_bpf__open(); skel = pid_iter_bpf__open();
if (!skel) { if (!skel) {
......
...@@ -1604,8 +1604,6 @@ static int load_with_options(int argc, char **argv, bool first_prog_only) ...@@ -1604,8 +1604,6 @@ static int load_with_options(int argc, char **argv, bool first_prog_only)
} }
} }
set_max_rlimit();
if (verifier_logs) if (verifier_logs)
/* log_level1 + log_level2 + stats, but not stable UAPI */ /* log_level1 + log_level2 + stats, but not stable UAPI */
open_opts.kernel_log_level = 1 + 2 + 4; open_opts.kernel_log_level = 1 + 2 + 4;
...@@ -2303,7 +2301,6 @@ static int do_profile(int argc, char **argv) ...@@ -2303,7 +2301,6 @@ static int do_profile(int argc, char **argv)
} }
} }
set_max_rlimit();
err = profiler_bpf__load(profile_obj); err = profiler_bpf__load(profile_obj);
if (err) { if (err) {
p_err("failed to load profile_obj"); p_err("failed to load profile_obj");
......
...@@ -501,8 +501,6 @@ static int do_register(int argc, char **argv) ...@@ -501,8 +501,6 @@ static int do_register(int argc, char **argv)
if (libbpf_get_error(obj)) if (libbpf_get_error(obj))
return -1; return -1;
set_max_rlimit();
if (bpf_object__load(obj)) { if (bpf_object__load(obj)) {
bpf_object__close(obj); bpf_object__close(obj);
return -1; return -1;
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <sys/resource.h>
#include <time.h> #include <time.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
...@@ -88,16 +87,6 @@ int libbpf_print_fn(enum libbpf_print_level level, ...@@ -88,16 +87,6 @@ int libbpf_print_fn(enum libbpf_print_level level,
return vfprintf(stderr, format, args); return vfprintf(stderr, format, args);
} }
static int bump_memlock_rlimit(void)
{
struct rlimit rlim_new = {
.rlim_cur = RLIM_INFINITY,
.rlim_max = RLIM_INFINITY,
};
return setrlimit(RLIMIT_MEMLOCK, &rlim_new);
}
void handle_event(void *ctx, int cpu, void *data, __u32 data_sz) void handle_event(void *ctx, int cpu, void *data, __u32 data_sz)
{ {
const struct runq_event *e = data; const struct runq_event *e = data;
...@@ -133,11 +122,8 @@ int main(int argc, char **argv) ...@@ -133,11 +122,8 @@ int main(int argc, char **argv)
libbpf_set_print(libbpf_print_fn); libbpf_set_print(libbpf_print_fn);
err = bump_memlock_rlimit(); /* Use libbpf 1.0 API mode */
if (err) { libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
fprintf(stderr, "failed to increase rlimit: %d", err);
return 1;
}
obj = runqslower_bpf__open(); obj = runqslower_bpf__open();
if (!obj) { if (!obj) {
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <fcntl.h> #include <fcntl.h>
#include <pthread.h> #include <pthread.h>
#include <sys/sysinfo.h> #include <sys/sysinfo.h>
#include <sys/resource.h>
#include <signal.h> #include <signal.h>
#include "bench.h" #include "bench.h"
#include "testing_helpers.h" #include "testing_helpers.h"
......
#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);
}
}
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include "bpf_rlimit.h"
#include "flow_dissector_load.h" #include "flow_dissector_load.h"
const char *cfg_pin_path = "/sys/fs/bpf/flow_dissector"; const char *cfg_pin_path = "/sys/fs/bpf/flow_dissector";
...@@ -25,9 +24,8 @@ static void load_and_attach_program(void) ...@@ -25,9 +24,8 @@ static void load_and_attach_program(void)
int prog_fd, ret; int prog_fd, ret;
struct bpf_object *obj; struct bpf_object *obj;
ret = libbpf_set_strict_mode(LIBBPF_STRICT_ALL); /* Use libbpf 1.0 API mode */
if (ret) libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
error(1, 0, "failed to enable libbpf strict mode: %d", ret);
ret = bpf_flow_load(&obj, cfg_path_name, cfg_prog_name, ret = bpf_flow_load(&obj, cfg_path_name, cfg_prog_name,
cfg_map_name, NULL, &prog_fd, NULL); cfg_map_name, NULL, &prog_fd, NULL);
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
#include "testing_helpers.h" #include "testing_helpers.h"
#include "bpf_rlimit.h"
#define CHECK(condition, tag, format...) ({ \ #define CHECK(condition, tag, format...) ({ \
int __ret = !!(condition); \ int __ret = !!(condition); \
...@@ -67,6 +66,9 @@ int main(int argc, char **argv) ...@@ -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)) if (CHECK(cgroup_fd < 0, "cgroup_setup_and_join", "err %d errno %d\n", cgroup_fd, errno))
return 1; 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); 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)) if (CHECK(err, "bpf_prog_test_load", "err %d errno %d\n", err, errno))
goto cleanup_cgroup_env; goto cleanup_cgroup_env;
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <linux/filter.h> #include <linux/filter.h>
#include <linux/unistd.h> #include <linux/unistd.h>
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <sys/resource.h>
#include <libelf.h> #include <libelf.h>
#include <gelf.h> #include <gelf.h>
#include <string.h> #include <string.h>
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <sys/sysinfo.h> #include <sys/sysinfo.h>
#include "bpf_rlimit.h"
#include "bpf_util.h" #include "bpf_util.h"
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
#include "testing_helpers.h" #include "testing_helpers.h"
...@@ -52,6 +51,9 @@ int main(int argc, char **argv) ...@@ -52,6 +51,9 @@ int main(int argc, char **argv)
goto err; 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), map_fd = bpf_map_create(BPF_MAP_TYPE_CGROUP_STORAGE, NULL, sizeof(key),
sizeof(value), 0, NULL); sizeof(value), 0, NULL);
if (map_fd < 0) { if (map_fd < 0) {
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
#include "testing_helpers.h" #include "testing_helpers.h"
#include "bpf_rlimit.h"
#define DEV_CGROUP_PROG "./dev_cgroup.o" #define DEV_CGROUP_PROG "./dev_cgroup.o"
...@@ -28,6 +27,9 @@ int main(int argc, char **argv) ...@@ -28,6 +27,9 @@ int main(int argc, char **argv)
int prog_fd, cgroup_fd; int prog_fd, cgroup_fd;
__u32 prog_cnt; __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, if (bpf_prog_test_load(DEV_CGROUP_PROG, BPF_PROG_TYPE_CGROUP_DEVICE,
&obj, &prog_fd)) { &obj, &prog_fd)) {
printf("Failed to load DEV_CGROUP program\n"); printf("Failed to load DEV_CGROUP program\n");
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include "bpf_util.h" #include "bpf_util.h"
#include "bpf_rlimit.h"
struct tlpm_node { struct tlpm_node {
struct tlpm_node *next; struct tlpm_node *next;
...@@ -791,6 +790,9 @@ int main(void) ...@@ -791,6 +790,9 @@ int main(void)
/* we want predictable, pseudo random tests */ /* we want predictable, pseudo random tests */
srand(0xf00ba1); srand(0xf00ba1);
/* Use libbpf 1.0 API mode */
libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
test_lpm_basic(); test_lpm_basic();
test_lpm_order(); test_lpm_order();
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include "bpf_util.h" #include "bpf_util.h"
#include "bpf_rlimit.h"
#include "../../../include/linux/filter.h" #include "../../../include/linux/filter.h"
#define LOCAL_FREE_TARGET (128) #define LOCAL_FREE_TARGET (128)
...@@ -878,6 +877,9 @@ int main(int argc, char **argv) ...@@ -878,6 +877,9 @@ int main(int argc, char **argv)
assert(nr_cpus != -1); assert(nr_cpus != -1);
printf("nr_cpus:%d\n\n", nr_cpus); 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++) { for (f = 0; f < ARRAY_SIZE(map_flags); f++) {
unsigned int tgt_free = (map_flags[f] & BPF_F_NO_COMMON_LRU) ? unsigned int tgt_free = (map_flags[f] & BPF_F_NO_COMMON_LRU) ?
PERCPU_FREE_TARGET : LOCAL_FREE_TARGET; PERCPU_FREE_TARGET : LOCAL_FREE_TARGET;
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include "bpf_rlimit.h"
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
#define CGROUP_PATH "/skb_cgroup_test" #define CGROUP_PATH "/skb_cgroup_test"
...@@ -160,6 +159,9 @@ int main(int argc, char **argv) ...@@ -160,6 +159,9 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
/* Use libbpf 1.0 API mode */
libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
cgfd = cgroup_setup_and_join(CGROUP_PATH); cgfd = cgroup_setup_and_join(CGROUP_PATH);
if (cgfd < 0) if (cgfd < 0)
goto err; goto err;
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
#include <bpf/bpf_endian.h> #include <bpf/bpf_endian.h>
#include "bpf_rlimit.h"
#include "bpf_util.h" #include "bpf_util.h"
#define CG_PATH "/foo" #define CG_PATH "/foo"
...@@ -541,6 +540,9 @@ int main(int argc, char **argv) ...@@ -541,6 +540,9 @@ int main(int argc, char **argv)
if (cgfd < 0) if (cgfd < 0)
goto err; goto err;
/* Use libbpf 1.0 API mode */
libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
if (run_tests(cgfd)) if (run_tests(cgfd))
goto err; goto err;
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
#include "bpf_rlimit.h"
#include "bpf_util.h" #include "bpf_util.h"
#ifndef ENOTSUPP #ifndef ENOTSUPP
...@@ -1418,6 +1417,9 @@ int main(int argc, char **argv) ...@@ -1418,6 +1417,9 @@ int main(int argc, char **argv)
if (cgfd < 0) if (cgfd < 0)
goto err; goto err;
/* Use libbpf 1.0 API mode */
libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
if (run_tests(cgfd)) if (run_tests(cgfd))
goto err; goto err;
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <sched.h> #include <sched.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/sendfile.h> #include <sys/sendfile.h>
...@@ -37,7 +36,6 @@ ...@@ -37,7 +36,6 @@
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include "bpf_util.h" #include "bpf_util.h"
#include "bpf_rlimit.h"
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
int running; int running;
...@@ -2017,6 +2015,9 @@ int main(int argc, char **argv) ...@@ -2017,6 +2015,9 @@ int main(int argc, char **argv)
cg_created = 1; cg_created = 1;
} }
/* Use libbpf 1.0 API mode */
libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
if (test == SELFTESTS) { if (test == SELFTESTS) {
err = test_selftest(cg_fd, &options); err = test_selftest(cg_fd, &options);
goto out; goto out;
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <bpf/bpf_endian.h> #include <bpf/bpf_endian.h>
#include "bpf_rlimit.h"
#include "bpf_util.h" #include "bpf_util.h"
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
#include "testing_helpers.h" #include "testing_helpers.h"
...@@ -1618,6 +1617,9 @@ int main(int argc, char **argv) ...@@ -1618,6 +1617,9 @@ int main(int argc, char **argv)
if (cgfd < 0) if (cgfd < 0)
goto err; goto err;
/* Use libbpf 1.0 API mode */
libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
if (run_tests(cgfd)) if (run_tests(cgfd))
goto err; goto err;
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include "../../../include/linux/filter.h" #include "../../../include/linux/filter.h"
#include "bpf_rlimit.h"
#include "testing_helpers.h" #include "testing_helpers.h"
static struct bpf_insn prog[BPF_MAXINSNS]; static struct bpf_insn prog[BPF_MAXINSNS];
...@@ -189,6 +188,9 @@ int main(void) ...@@ -189,6 +188,9 @@ int main(void)
uint32_t tests = 0; uint32_t tests = 0;
int i, fd_map; 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), fd_map = bpf_map_create(BPF_MAP_TYPE_HASH, NULL, sizeof(int),
sizeof(int), 1, &opts); sizeof(int), 1, &opts);
assert(fd_map > 0); assert(fd_map > 0);
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include "bpf_rlimit.h"
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
static int start_server(const struct sockaddr *addr, socklen_t len, bool dual) static int start_server(const struct sockaddr *addr, socklen_t len, bool dual)
...@@ -235,6 +234,9 @@ int main(int argc, char **argv) ...@@ -235,6 +234,9 @@ int main(int argc, char **argv)
exit(1); 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); results = get_map_fd_by_prog_id(atoi(argv[1]), &xdp);
if (results < 0) { if (results < 0) {
log_err("Can't get map"); log_err("Can't get map");
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <linux/err.h> #include <linux/err.h>
#include "bpf_rlimit.h"
#include "bpf_util.h" #include "bpf_util.h"
#include "cgroup_helpers.h" #include "cgroup_helpers.h"
......
...@@ -11,8 +11,6 @@ ...@@ -11,8 +11,6 @@
#include <bpf/bpf.h> #include <bpf/bpf.h>
#include "bpf_rlimit.h"
#define LOG_SIZE (1 << 20) #define LOG_SIZE (1 << 20)
#define err(str...) printf("ERROR: " str) #define err(str...) printf("ERROR: " str)
...@@ -141,6 +139,9 @@ int main(int argc, char **argv) ...@@ -141,6 +139,9 @@ int main(int argc, char **argv)
memset(log, 1, LOG_SIZE); memset(log, 1, LOG_SIZE);
/* Use libbpf 1.0 API mode */
libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
/* Test incorrect attr */ /* Test incorrect attr */
printf("Test log_level 0...\n"); printf("Test log_level 0...\n");
test_log_bad(log, LOG_SIZE, 0); test_log_bad(log, LOG_SIZE, 0);
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <net/if.h> #include <net/if.h>
#include <unistd.h> #include <unistd.h>
#include <libgen.h> #include <libgen.h>
#include <sys/resource.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <libgen.h> #include <libgen.h>
#include <sys/resource.h>
#include <net/if.h> #include <net/if.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
...@@ -89,7 +88,6 @@ int main(int argc, char **argv) ...@@ -89,7 +88,6 @@ int main(int argc, char **argv)
{ {
__u32 mode_flags = XDP_FLAGS_DRV_MODE | XDP_FLAGS_SKB_MODE; __u32 mode_flags = XDP_FLAGS_DRV_MODE | XDP_FLAGS_SKB_MODE;
struct addrinfo *a, hints = { .ai_family = AF_INET }; struct addrinfo *a, hints = { .ai_family = AF_INET };
struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
__u16 count = XDPING_DEFAULT_COUNT; __u16 count = XDPING_DEFAULT_COUNT;
struct pinginfo pinginfo = { 0 }; struct pinginfo pinginfo = { 0 };
const char *optstr = "c:I:NsS"; const char *optstr = "c:I:NsS";
...@@ -167,10 +165,8 @@ int main(int argc, char **argv) ...@@ -167,10 +165,8 @@ int main(int argc, char **argv)
freeaddrinfo(a); freeaddrinfo(a);
} }
if (setrlimit(RLIMIT_MEMLOCK, &r)) { /* Use libbpf 1.0 API mode */
perror("setrlimit(RLIMIT_MEMLOCK)"); libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
return 1;
}
snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]); snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
......
...@@ -90,7 +90,6 @@ ...@@ -90,7 +90,6 @@
#include <string.h> #include <string.h>
#include <stddef.h> #include <stddef.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/resource.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/queue.h> #include <sys/queue.h>
#include <time.h> #include <time.h>
...@@ -1448,14 +1447,13 @@ static void ifobject_delete(struct ifobject *ifobj) ...@@ -1448,14 +1447,13 @@ static void ifobject_delete(struct ifobject *ifobj)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
struct rlimit _rlim = { RLIM_INFINITY, RLIM_INFINITY };
struct pkt_stream *pkt_stream_default; struct pkt_stream *pkt_stream_default;
struct ifobject *ifobj_tx, *ifobj_rx; struct ifobject *ifobj_tx, *ifobj_rx;
struct test_spec test; struct test_spec test;
u32 i, j; u32 i, j;
if (setrlimit(RLIMIT_MEMLOCK, &_rlim)) /* Use libbpf 1.0 API mode */
exit_with_error(errno); libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
ifobj_tx = ifobject_create(); ifobj_tx = ifobject_create();
if (!ifobj_tx) if (!ifobj_tx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment