bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups
@ 2022-04-03 14:42 Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor Yafang Shao
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

We have switched to memcg based memory accouting and thus the rlimit is
not needn't any more. LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK is introduced in
libbpf for backward compatibility, so we can use it instead now.

v2: use libbpf_set_strict_mode instead. (Andrii)
v1: https://lore.kernel.org/bpf/20220320060815.7716-2-laoar.shao@gmail.com/

Yafang Shao (9):
  bpf: selftests: Use libbpf 1.0 API mode in bpf constructor
  bpf: selftests: Use bpf strict all ctor in xdping
  bpf: selftests: Use bpf strict all ctor in xdpxceiver
  bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in
    xdpsock_user
  bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xsk_fwd
  bpf: runqslower: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL
  bpf: bpftool: Remove useless return value of libbpf_set_strict_mode
  bpf: bpftool: Set LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK for legacy libbpf
  bpf: bpftool: Remove useless rlimit setting

 samples/bpf/xdpsock_user.c               |  9 ++------
 samples/bpf/xsk_fwd.c                    |  7 ++-----
 tools/bpf/bpftool/common.c               |  7 -------
 tools/bpf/bpftool/feature.c              |  2 --
 tools/bpf/bpftool/main.c                 |  6 +++---
 tools/bpf/bpftool/main.h                 |  2 --
 tools/bpf/bpftool/map.c                  |  2 --
 tools/bpf/bpftool/pids.c                 |  1 -
 tools/bpf/bpftool/prog.c                 |  3 ---
 tools/bpf/bpftool/struct_ops.c           |  2 --
 tools/bpf/runqslower/runqslower.c        | 17 ++--------------
 tools/testing/selftests/bpf/bpf_rlimit.h | 26 +++---------------------
 tools/testing/selftests/bpf/xdping.c     |  8 +-------
 tools/testing/selftests/bpf/xdpxceiver.c |  7 ++-----
 14 files changed, 15 insertions(+), 84 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
@ 2022-04-03 14:42 ` Yafang Shao
  2022-04-04  1:24   ` Andrii Nakryiko
  2022-04-03 14:42 ` [PATCH bpf-next v2 2/9] bpf: selftests: Use bpf strict all ctor in xdping Yafang Shao
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

In libbpf 1.0 API mode, it will bump rlimit automatically if there's no
memcg-basaed accounting, so we can use libbpf 1.0 API mode instead in case
we want to run it in an old kernel.

The constructor is renamed to bpf_strict_all_ctor().

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 tools/testing/selftests/bpf/bpf_rlimit.h | 26 +++---------------------
 1 file changed, 3 insertions(+), 23 deletions(-)

diff --git a/tools/testing/selftests/bpf/bpf_rlimit.h b/tools/testing/selftests/bpf/bpf_rlimit.h
index 9dac9b30f8ef..d050f7d0bb5c 100644
--- a/tools/testing/selftests/bpf/bpf_rlimit.h
+++ b/tools/testing/selftests/bpf/bpf_rlimit.h
@@ -1,28 +1,8 @@
 #include <sys/resource.h>
 #include <stdio.h>
 
-static  __attribute__((constructor)) void bpf_rlimit_ctor(void)
+static  __attribute__((constructor)) void bpf_strict_all_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);
-	}
+	/* Use libbpf 1.0 API mode */
+	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 2/9] bpf: selftests: Use bpf strict all ctor in xdping
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor Yafang Shao
@ 2022-04-03 14:42 ` Yafang Shao
  2022-04-04  1:26   ` Andrii Nakryiko
  2022-04-03 14:42 ` [PATCH bpf-next v2 3/9] bpf: selftests: Use bpf strict all ctor in xdpxceiver Yafang Shao
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

Aoid using the deprecated RLIMIT_MEMLOCK.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 tools/testing/selftests/bpf/xdping.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/tools/testing/selftests/bpf/xdping.c b/tools/testing/selftests/bpf/xdping.c
index c567856fd1bc..46ba0d7f73e8 100644
--- a/tools/testing/selftests/bpf/xdping.c
+++ b/tools/testing/selftests/bpf/xdping.c
@@ -12,7 +12,6 @@
 #include <string.h>
 #include <unistd.h>
 #include <libgen.h>
-#include <sys/resource.h>
 #include <net/if.h>
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -20,6 +19,7 @@
 
 #include "bpf/bpf.h"
 #include "bpf/libbpf.h"
+#include "bpf_rlimit.h"
 
 #include "xdping.h"
 #include "testing_helpers.h"
@@ -89,7 +89,6 @@ int main(int argc, char **argv)
 {
 	__u32 mode_flags = XDP_FLAGS_DRV_MODE | XDP_FLAGS_SKB_MODE;
 	struct addrinfo *a, hints = { .ai_family = AF_INET };
-	struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
 	__u16 count = XDPING_DEFAULT_COUNT;
 	struct pinginfo pinginfo = { 0 };
 	const char *optstr = "c:I:NsS";
@@ -167,11 +166,6 @@ int main(int argc, char **argv)
 		freeaddrinfo(a);
 	}
 
-	if (setrlimit(RLIMIT_MEMLOCK, &r)) {
-		perror("setrlimit(RLIMIT_MEMLOCK)");
-		return 1;
-	}
-
 	snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
 
 	if (bpf_prog_test_load(filename, BPF_PROG_TYPE_XDP, &obj, &prog_fd)) {
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 3/9] bpf: selftests: Use bpf strict all ctor in xdpxceiver
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 2/9] bpf: selftests: Use bpf strict all ctor in xdping Yafang Shao
@ 2022-04-03 14:42 ` Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 4/9] bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xdpsock_user Yafang Shao
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

Avoid using the deprecated RLIMIT_MEMLOCK.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 tools/testing/selftests/bpf/xdpxceiver.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/tools/testing/selftests/bpf/xdpxceiver.c b/tools/testing/selftests/bpf/xdpxceiver.c
index 5f8296d29e77..1be14e0c236e 100644
--- a/tools/testing/selftests/bpf/xdpxceiver.c
+++ b/tools/testing/selftests/bpf/xdpxceiver.c
@@ -90,13 +90,14 @@
 #include <string.h>
 #include <stddef.h>
 #include <sys/mman.h>
-#include <sys/resource.h>
 #include <sys/types.h>
 #include <sys/queue.h>
 #include <time.h>
 #include <unistd.h>
 #include <stdatomic.h>
 #include <bpf/xsk.h>
+
+#include "bpf_rlimit.h"
 #include "xdpxceiver.h"
 #include "../kselftest.h"
 
@@ -1448,15 +1449,11 @@ static void ifobject_delete(struct ifobject *ifobj)
 
 int main(int argc, char **argv)
 {
-	struct rlimit _rlim = { RLIM_INFINITY, RLIM_INFINITY };
 	struct pkt_stream *pkt_stream_default;
 	struct ifobject *ifobj_tx, *ifobj_rx;
 	struct test_spec test;
 	u32 i, j;
 
-	if (setrlimit(RLIMIT_MEMLOCK, &_rlim))
-		exit_with_error(errno);
-
 	ifobj_tx = ifobject_create();
 	if (!ifobj_tx)
 		exit_with_error(ENOMEM);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 4/9] bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xdpsock_user
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
                   ` (2 preceding siblings ...)
  2022-04-03 14:42 ` [PATCH bpf-next v2 3/9] bpf: selftests: Use bpf strict all ctor in xdpxceiver Yafang Shao
@ 2022-04-03 14:42 ` Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 5/9] bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xsk_fwd Yafang Shao
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

Avoid using the deprecated RLIMIT_MEMLOCK.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 samples/bpf/xdpsock_user.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/samples/bpf/xdpsock_user.c b/samples/bpf/xdpsock_user.c
index 6f3fe30ad283..be7d2572e3e6 100644
--- a/samples/bpf/xdpsock_user.c
+++ b/samples/bpf/xdpsock_user.c
@@ -25,7 +25,6 @@
 #include <string.h>
 #include <sys/capability.h>
 #include <sys/mman.h>
-#include <sys/resource.h>
 #include <sys/socket.h>
 #include <sys/types.h>
 #include <sys/un.h>
@@ -1886,7 +1885,6 @@ int main(int argc, char **argv)
 {
 	struct __user_cap_header_struct hdr = { _LINUX_CAPABILITY_VERSION_3, 0 };
 	struct __user_cap_data_struct data[2] = { { 0 } };
-	struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY};
 	bool rx = false, tx = false;
 	struct sched_param schparam;
 	struct xsk_umem_info *umem;
@@ -1917,11 +1915,8 @@ int main(int argc, char **argv)
 				data[1].effective, data[1].inheritable, data[1].permitted);
 		}
 	} else {
-		if (setrlimit(RLIMIT_MEMLOCK, &r)) {
-			fprintf(stderr, "ERROR: setrlimit(RLIMIT_MEMLOCK) \"%s\"\n",
-				strerror(errno));
-			exit(EXIT_FAILURE);
-		}
+		/* Use libbpf 1.0 API mode */
+		libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 
 		if (opt_num_xsks > 1)
 			load_xdp_program(argv, &obj);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 5/9] bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xsk_fwd
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
                   ` (3 preceding siblings ...)
  2022-04-03 14:42 ` [PATCH bpf-next v2 4/9] bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xdpsock_user Yafang Shao
@ 2022-04-03 14:42 ` Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 6/9] bpf: runqslower: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL Yafang Shao
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

Avoid using the deprecated RLIMIT_MEMLOCK.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 samples/bpf/xsk_fwd.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/samples/bpf/xsk_fwd.c b/samples/bpf/xsk_fwd.c
index 2220509588a0..2324e18ccc7e 100644
--- a/samples/bpf/xsk_fwd.c
+++ b/samples/bpf/xsk_fwd.c
@@ -10,7 +10,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/mman.h>
-#include <sys/resource.h>
 #include <sys/socket.h>
 #include <sys/types.h>
 #include <time.h>
@@ -131,7 +130,6 @@ static struct bpool *
 bpool_init(struct bpool_params *params,
 	   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 slabs_size, slabs_reserved_size;
 	u64 buffers_size, buffers_reserved_size;
@@ -140,9 +138,8 @@ bpool_init(struct bpool_params *params,
 	u8 *p;
 	int status;
 
-	/* mmap prep. */
-	if (setrlimit(RLIMIT_MEMLOCK, &r))
-		return NULL;
+	/* Use libbpf 1.0 API mode */
+	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 
 	/* bpool internals dimensioning. */
 	n_slabs = (params->n_buffers + params->n_buffers_per_slab - 1) /
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 6/9] bpf: runqslower: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
                   ` (4 preceding siblings ...)
  2022-04-03 14:42 ` [PATCH bpf-next v2 5/9] bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xsk_fwd Yafang Shao
@ 2022-04-03 14:42 ` Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 7/9] bpf: bpftool: Remove useless return value of libbpf_set_strict_mode Yafang Shao
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

Avoid using the deprecated RLIMIT_MEMLOCK.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 tools/bpf/runqslower/runqslower.c | 17 ++---------------
 1 file changed, 2 insertions(+), 15 deletions(-)

diff --git a/tools/bpf/runqslower/runqslower.c b/tools/bpf/runqslower/runqslower.c
index d78f4148597f..3439ded327f8 100644
--- a/tools/bpf/runqslower/runqslower.c
+++ b/tools/bpf/runqslower/runqslower.c
@@ -88,16 +88,6 @@ int libbpf_print_fn(enum libbpf_print_level level,
 	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)
 {
 	const struct runq_event *e = data;
@@ -133,11 +123,8 @@ int main(int argc, char **argv)
 
 	libbpf_set_print(libbpf_print_fn);
 
-	err = bump_memlock_rlimit();
-	if (err) {
-		fprintf(stderr, "failed to increase rlimit: %d", err);
-		return 1;
-	}
+	/* Use libbpf 1.0 API mode */
+	libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
 
 	obj = runqslower_bpf__open();
 	if (!obj) {
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 7/9] bpf: bpftool: Remove useless return value of libbpf_set_strict_mode
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
                   ` (5 preceding siblings ...)
  2022-04-03 14:42 ` [PATCH bpf-next v2 6/9] bpf: runqslower: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL Yafang Shao
@ 2022-04-03 14:42 ` Yafang Shao
  2022-04-03 14:42 ` [PATCH bpf-next v2 8/9] bpf: bpftool: Set LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK for legacy libbpf Yafang Shao
  2022-04-03 14:43 ` [PATCH bpf-next v2 9/9] bpf: bpftool: Remove useless rlimit setting Yafang Shao
  8 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

libbpf_set_strict_mode alwasy 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>
---
 tools/bpf/bpftool/main.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c
index e81227761f5d..451cefc2d0da 100644
--- a/tools/bpf/bpftool/main.c
+++ b/tools/bpf/bpftool/main.c
@@ -507,9 +507,7 @@ int main(int argc, char **argv)
 		 * 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);
 	}
 
 	argc -= optind;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 8/9] bpf: bpftool: Set LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK for legacy libbpf
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
                   ` (6 preceding siblings ...)
  2022-04-03 14:42 ` [PATCH bpf-next v2 7/9] bpf: bpftool: Remove useless return value of libbpf_set_strict_mode Yafang Shao
@ 2022-04-03 14:42 ` Yafang Shao
  2022-04-03 14:43 ` [PATCH bpf-next v2 9/9] bpf: bpftool: Remove useless rlimit setting Yafang Shao
  8 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:42 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK has already been set for non legacy
libbpf, let's also set it for legacy libbpf then we can avoid setting the
deprecatred RLIMIT_MEMLOCK directly.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 tools/bpf/bpftool/main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c
index 451cefc2d0da..9062ef2b8767 100644
--- a/tools/bpf/bpftool/main.c
+++ b/tools/bpf/bpftool/main.c
@@ -508,6 +508,8 @@ int main(int argc, char **argv)
 		 * mode for loading generated skeleton.
 		 */
 		libbpf_set_strict_mode(LIBBPF_STRICT_ALL & ~LIBBPF_STRICT_MAP_DEFINITIONS);
+	} else {
+		libbpf_set_strict_mode(LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK);
 	}
 
 	argc -= optind;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH bpf-next v2 9/9] bpf: bpftool: Remove useless rlimit setting
  2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
                   ` (7 preceding siblings ...)
  2022-04-03 14:42 ` [PATCH bpf-next v2 8/9] bpf: bpftool: Set LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK for legacy libbpf Yafang Shao
@ 2022-04-03 14:43 ` Yafang Shao
  8 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-03 14:43 UTC (permalink / raw)
  To: ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh
  Cc: netdev, bpf, Yafang Shao

As we have already set LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK, we don't need to
bump RLIMIT_MEMLOCK any more.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
---
 tools/bpf/bpftool/common.c     | 7 -------
 tools/bpf/bpftool/feature.c    | 2 --
 tools/bpf/bpftool/main.h       | 2 --
 tools/bpf/bpftool/map.c        | 2 --
 tools/bpf/bpftool/pids.c       | 1 -
 tools/bpf/bpftool/prog.c       | 3 ---
 tools/bpf/bpftool/struct_ops.c | 2 --
 7 files changed, 19 deletions(-)

diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c
index 0c1e06cf50b9..6b1e67851690 100644
--- a/tools/bpf/bpftool/common.c
+++ b/tools/bpf/bpftool/common.c
@@ -119,13 +119,6 @@ static bool is_bpffs(char *path)
 	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)
 {
diff --git a/tools/bpf/bpftool/feature.c b/tools/bpf/bpftool/feature.c
index 290998c82de1..19c484e63da4 100644
--- a/tools/bpf/bpftool/feature.c
+++ b/tools/bpf/bpftool/feature.c
@@ -1136,8 +1136,6 @@ static int do_probe(int argc, char **argv)
 	__u32 ifindex = 0;
 	char *ifname;
 
-	set_max_rlimit();
-
 	while (argc) {
 		if (is_prefix(*argv, "kernel")) {
 			if (target != COMPONENT_UNSPEC) {
diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h
index 6e9277ffc68c..aa99ffab451a 100644
--- a/tools/bpf/bpftool/main.h
+++ b/tools/bpf/bpftool/main.h
@@ -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 usage(void) __noreturn;
 
-void set_max_rlimit(void);
-
 int mount_tracefs(const char *target);
 
 struct obj_ref {
diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c
index c26378f20831..877387ef79c7 100644
--- a/tools/bpf/bpftool/map.c
+++ b/tools/bpf/bpftool/map.c
@@ -1342,8 +1342,6 @@ static int do_create(int argc, char **argv)
 		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));
diff --git a/tools/bpf/bpftool/pids.c b/tools/bpf/bpftool/pids.c
index bb6c969a114a..e2d00d3cd868 100644
--- a/tools/bpf/bpftool/pids.c
+++ b/tools/bpf/bpftool/pids.c
@@ -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");
 		return -1;
 	}
-	set_max_rlimit();
 
 	skel = pid_iter_bpf__open();
 	if (!skel) {
diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c
index bc4e05542c2b..d5ba3b6f30ae 100644
--- a/tools/bpf/bpftool/prog.c
+++ b/tools/bpf/bpftool/prog.c
@@ -1603,8 +1603,6 @@ static int load_with_options(int argc, char **argv, bool first_prog_only)
 		}
 	}
 
-	set_max_rlimit();
-
 	if (verifier_logs)
 		/* log_level1 + log_level2 + stats, but not stable UAPI */
 		open_opts.kernel_log_level = 1 + 2 + 4;
@@ -2302,7 +2300,6 @@ static int do_profile(int argc, char **argv)
 		}
 	}
 
-	set_max_rlimit();
 	err = profiler_bpf__load(profile_obj);
 	if (err) {
 		p_err("failed to load profile_obj");
diff --git a/tools/bpf/bpftool/struct_ops.c b/tools/bpf/bpftool/struct_ops.c
index e08a6ff2866c..2535f079ed67 100644
--- a/tools/bpf/bpftool/struct_ops.c
+++ b/tools/bpf/bpftool/struct_ops.c
@@ -501,8 +501,6 @@ static int do_register(int argc, char **argv)
 	if (libbpf_get_error(obj))
 		return -1;
 
-	set_max_rlimit();
-
 	if (bpf_object__load(obj)) {
 		bpf_object__close(obj);
 		return -1;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor
  2022-04-03 14:42 ` [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor Yafang Shao
@ 2022-04-04  1:24   ` Andrii Nakryiko
  2022-04-04  1:26     ` Andrii Nakryiko
  2022-04-04  6:44     ` Yafang Shao
  0 siblings, 2 replies; 16+ messages in thread
From: Andrii Nakryiko @ 2022-04-04  1:24 UTC (permalink / raw)
  To: Yafang Shao
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin Lau,
	Song Liu, Yonghong Song, john fastabend, KP Singh, Networking,
	bpf

On Sun, Apr 3, 2022 at 7:43 AM Yafang Shao <laoar.shao@gmail.com> wrote:
>
> In libbpf 1.0 API mode, it will bump rlimit automatically if there's no
> memcg-basaed accounting, so we can use libbpf 1.0 API mode instead in case
> we want to run it in an old kernel.
>
> The constructor is renamed to bpf_strict_all_ctor().
>
> Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> ---
>  tools/testing/selftests/bpf/bpf_rlimit.h | 26 +++---------------------
>  1 file changed, 3 insertions(+), 23 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/bpf_rlimit.h b/tools/testing/selftests/bpf/bpf_rlimit.h
> index 9dac9b30f8ef..d050f7d0bb5c 100644
> --- a/tools/testing/selftests/bpf/bpf_rlimit.h
> +++ b/tools/testing/selftests/bpf/bpf_rlimit.h
> @@ -1,28 +1,8 @@
>  #include <sys/resource.h>
>  #include <stdio.h>
>
> -static  __attribute__((constructor)) void bpf_rlimit_ctor(void)
> +static  __attribute__((constructor)) void bpf_strict_all_ctor(void)

well, no, let's get rid of bpf_rlimit.h altogether. There is no need
for constructor magic when you can have an explicit
libbpf_set_strict_mode(LIBBPF_STRICT_ALL).

>  {
> -       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);
> -       }
> +       /* Use libbpf 1.0 API mode */
> +       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
>  }
> --
> 2.17.1
>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH bpf-next v2 2/9] bpf: selftests: Use bpf strict all ctor in xdping
  2022-04-03 14:42 ` [PATCH bpf-next v2 2/9] bpf: selftests: Use bpf strict all ctor in xdping Yafang Shao
@ 2022-04-04  1:26   ` Andrii Nakryiko
  2022-04-04  6:46     ` Yafang Shao
  0 siblings, 1 reply; 16+ messages in thread
From: Andrii Nakryiko @ 2022-04-04  1:26 UTC (permalink / raw)
  To: Yafang Shao
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin Lau,
	Song Liu, Yonghong Song, john fastabend, KP Singh, Networking,
	bpf

On Sun, Apr 3, 2022 at 7:43 AM Yafang Shao <laoar.shao@gmail.com> wrote:
>
> Aoid using the deprecated RLIMIT_MEMLOCK.

typo: avoid

>
> Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> ---
>  tools/testing/selftests/bpf/xdping.c | 8 +-------
>  1 file changed, 1 insertion(+), 7 deletions(-)
>

[...]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor
  2022-04-04  1:24   ` Andrii Nakryiko
@ 2022-04-04  1:26     ` Andrii Nakryiko
  2022-04-04  6:45       ` Yafang Shao
  2022-04-04  6:44     ` Yafang Shao
  1 sibling, 1 reply; 16+ messages in thread
From: Andrii Nakryiko @ 2022-04-04  1:26 UTC (permalink / raw)
  To: Yafang Shao
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin Lau,
	Song Liu, Yonghong Song, john fastabend, KP Singh, Networking,
	bpf

On Sun, Apr 3, 2022 at 6:24 PM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> On Sun, Apr 3, 2022 at 7:43 AM Yafang Shao <laoar.shao@gmail.com> wrote:
> >
> > In libbpf 1.0 API mode, it will bump rlimit automatically if there's no
> > memcg-basaed accounting, so we can use libbpf 1.0 API mode instead in case

also very eye catching typo: basaed -> based

> > we want to run it in an old kernel.
> >
> > The constructor is renamed to bpf_strict_all_ctor().
> >
> > Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> > ---
> >  tools/testing/selftests/bpf/bpf_rlimit.h | 26 +++---------------------
> >  1 file changed, 3 insertions(+), 23 deletions(-)
> >
> > diff --git a/tools/testing/selftests/bpf/bpf_rlimit.h b/tools/testing/selftests/bpf/bpf_rlimit.h
> > index 9dac9b30f8ef..d050f7d0bb5c 100644
> > --- a/tools/testing/selftests/bpf/bpf_rlimit.h
> > +++ b/tools/testing/selftests/bpf/bpf_rlimit.h
> > @@ -1,28 +1,8 @@
> >  #include <sys/resource.h>
> >  #include <stdio.h>
> >
> > -static  __attribute__((constructor)) void bpf_rlimit_ctor(void)
> > +static  __attribute__((constructor)) void bpf_strict_all_ctor(void)
>
> well, no, let's get rid of bpf_rlimit.h altogether. There is no need
> for constructor magic when you can have an explicit
> libbpf_set_strict_mode(LIBBPF_STRICT_ALL).
>
> >  {
> > -       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);
> > -       }
> > +       /* Use libbpf 1.0 API mode */
> > +       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
> >  }
> > --
> > 2.17.1
> >

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor
  2022-04-04  1:24   ` Andrii Nakryiko
  2022-04-04  1:26     ` Andrii Nakryiko
@ 2022-04-04  6:44     ` Yafang Shao
  1 sibling, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-04  6:44 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin Lau,
	Song Liu, Yonghong Song, john fastabend, KP Singh, Networking,
	bpf

On Mon, Apr 4, 2022 at 9:24 AM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> On Sun, Apr 3, 2022 at 7:43 AM Yafang Shao <laoar.shao@gmail.com> wrote:
> >
> > In libbpf 1.0 API mode, it will bump rlimit automatically if there's no
> > memcg-basaed accounting, so we can use libbpf 1.0 API mode instead in case
> > we want to run it in an old kernel.
> >
> > The constructor is renamed to bpf_strict_all_ctor().
> >
> > Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> > ---
> >  tools/testing/selftests/bpf/bpf_rlimit.h | 26 +++---------------------
> >  1 file changed, 3 insertions(+), 23 deletions(-)
> >
> > diff --git a/tools/testing/selftests/bpf/bpf_rlimit.h b/tools/testing/selftests/bpf/bpf_rlimit.h
> > index 9dac9b30f8ef..d050f7d0bb5c 100644
> > --- a/tools/testing/selftests/bpf/bpf_rlimit.h
> > +++ b/tools/testing/selftests/bpf/bpf_rlimit.h
> > @@ -1,28 +1,8 @@
> >  #include <sys/resource.h>
> >  #include <stdio.h>
> >
> > -static  __attribute__((constructor)) void bpf_rlimit_ctor(void)
> > +static  __attribute__((constructor)) void bpf_strict_all_ctor(void)
>
> well, no, let's get rid of bpf_rlimit.h altogether. There is no need
> for constructor magic when you can have an explicit
> libbpf_set_strict_mode(LIBBPF_STRICT_ALL).
>

Sure, I will do it.

> >  {
> > -       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);
> > -       }
> > +       /* Use libbpf 1.0 API mode */
> > +       libbpf_set_strict_mode(LIBBPF_STRICT_ALL);
> >  }
> > --
> > 2.17.1
> >

-- 
Thanks
Yafang

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor
  2022-04-04  1:26     ` Andrii Nakryiko
@ 2022-04-04  6:45       ` Yafang Shao
  0 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-04  6:45 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin Lau,
	Song Liu, Yonghong Song, john fastabend, KP Singh, Networking,
	bpf

On Mon, Apr 4, 2022 at 9:27 AM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> On Sun, Apr 3, 2022 at 6:24 PM Andrii Nakryiko
> <andrii.nakryiko@gmail.com> wrote:
> >
> > On Sun, Apr 3, 2022 at 7:43 AM Yafang Shao <laoar.shao@gmail.com> wrote:
> > >
> > > In libbpf 1.0 API mode, it will bump rlimit automatically if there's no
> > > memcg-basaed accounting, so we can use libbpf 1.0 API mode instead in case
>
> also very eye catching typo: basaed -> based

Thanks for pointing this out. I will be more careful.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH bpf-next v2 2/9] bpf: selftests: Use bpf strict all ctor in xdping
  2022-04-04  1:26   ` Andrii Nakryiko
@ 2022-04-04  6:46     ` Yafang Shao
  0 siblings, 0 replies; 16+ messages in thread
From: Yafang Shao @ 2022-04-04  6:46 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Martin Lau,
	Song Liu, Yonghong Song, john fastabend, KP Singh, Networking,
	bpf

On Mon, Apr 4, 2022 at 9:26 AM Andrii Nakryiko
<andrii.nakryiko@gmail.com> wrote:
>
> On Sun, Apr 3, 2022 at 7:43 AM Yafang Shao <laoar.shao@gmail.com> wrote:
> >
> > Aoid using the deprecated RLIMIT_MEMLOCK.
>
> typo: avoid

Thanks again.


-- 
Thanks
Yafang

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2022-04-04  6:47 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-03 14:42 [PATCH bpf-next v2 0/9] bpf: RLIMIT_MEMLOCK cleanups Yafang Shao
2022-04-03 14:42 ` [PATCH bpf-next v2 1/9] bpf: selftests: Use libbpf 1.0 API mode in bpf constructor Yafang Shao
2022-04-04  1:24   ` Andrii Nakryiko
2022-04-04  1:26     ` Andrii Nakryiko
2022-04-04  6:45       ` Yafang Shao
2022-04-04  6:44     ` Yafang Shao
2022-04-03 14:42 ` [PATCH bpf-next v2 2/9] bpf: selftests: Use bpf strict all ctor in xdping Yafang Shao
2022-04-04  1:26   ` Andrii Nakryiko
2022-04-04  6:46     ` Yafang Shao
2022-04-03 14:42 ` [PATCH bpf-next v2 3/9] bpf: selftests: Use bpf strict all ctor in xdpxceiver Yafang Shao
2022-04-03 14:42 ` [PATCH bpf-next v2 4/9] bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xdpsock_user Yafang Shao
2022-04-03 14:42 ` [PATCH bpf-next v2 5/9] bpf: samples: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL in xsk_fwd Yafang Shao
2022-04-03 14:42 ` [PATCH bpf-next v2 6/9] bpf: runqslower: Replace RLIMIT_MEMLOCK with LIBBPF_STRICT_ALL Yafang Shao
2022-04-03 14:42 ` [PATCH bpf-next v2 7/9] bpf: bpftool: Remove useless return value of libbpf_set_strict_mode Yafang Shao
2022-04-03 14:42 ` [PATCH bpf-next v2 8/9] bpf: bpftool: Set LIBBPF_STRICT_AUTO_RLIMIT_MEMLOCK for legacy libbpf Yafang Shao
2022-04-03 14:43 ` [PATCH bpf-next v2 9/9] bpf: bpftool: Remove useless rlimit setting Yafang Shao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).