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.
libbpf_set_strict_mode always return 0, so we don't need to check whether
the return value is 0 or not.
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220409125958.92629-4-laoar.shao@gmail.com
 
 #include <linux/magic.h>
 #include <net/if.h>
 #include <sys/mount.h>
-#include <sys/resource.h>
 #include <sys/stat.h>
 #include <sys/vfs.h>
 
        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
 mnt_fs(const char *target, const char *type, char *buff, size_t bufflen)
 {
 
        __u32 ifindex = 0;
        char *ifname;
 
-       set_max_rlimit();
-
        while (argc) {
                if (is_prefix(*argv, "kernel")) {
                        if (target != COMPONENT_UNSPEC) {
 
                 * It will still be rejected if users use LIBBPF_STRICT_ALL
                 * mode for loading generated skeleton.
                 */
-               ret = libbpf_set_strict_mode(LIBBPF_STRICT_ALL & ~LIBBPF_STRICT_MAP_DEFINITIONS);
-               if (ret)
-                       p_err("failed to enable libbpf strict mode: %d", ret);
+               libbpf_set_strict_mode(LIBBPF_STRICT_ALL & ~LIBBPF_STRICT_MAP_DEFINITIONS);
+       } else {
+               libbpf_set_strict_mode(LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK);
        }
 
        argc -= optind;
 
 void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep);
 void usage(void) __noreturn;
 
-void set_max_rlimit(void);
-
 int mount_tracefs(const char *target);
 
 struct obj_ref {
 
                goto exit;
        }
 
-       set_max_rlimit();
-
        fd = bpf_map_create(map_type, map_name, key_size, value_size, max_entries, &attr);
        if (fd < 0) {
                p_err("map create failed: %s", strerror(errno));
 
                p_err("failed to create hashmap for PID references");
                return -1;
        }
-       set_max_rlimit();
 
        skel = pid_iter_bpf__open();
        if (!skel) {
 
                }
        }
 
-       set_max_rlimit();
-
        if (verifier_logs)
                /* log_level1 + log_level2 + stats, but not stable UAPI */
                open_opts.kernel_log_level = 1 + 2 + 4;
                }
        }
 
-       set_max_rlimit();
        err = profiler_bpf__load(profile_obj);
        if (err) {
                p_err("failed to load profile_obj");
 
        if (libbpf_get_error(obj))
                return -1;
 
-       set_max_rlimit();
-
        if (bpf_object__load(obj)) {
                bpf_object__close(obj);
                return -1;