BpfLoadTest: Set rlimit memlock for old kernels
BpfLoadTest was failing on android13-5.10 kernels due to the rlimit
memlock not being configured large enough for the test process. Add the
necessary call to set rlimit memlock for pre-5.11 kernels.
5.11 kernels introduced cgroup-based memory accounting for bpf as
discussed at https://lore.kernel.org/bpf/20201201215900.3569844-1-guro@fb.com/
Flag: n/a
Test: atest libbpf_load_test
Bug: 326156952
Change-Id: I8eda9fe6cee099b1fd979720a4e94d685a571943
Signed-off-by: Neill Kapron <nkapron@google.com>
diff --git a/loader/BpfLoadTest.cpp b/loader/BpfLoadTest.cpp
index 8a2d072..e14aa7b 100644
--- a/loader/BpfLoadTest.cpp
+++ b/loader/BpfLoadTest.cpp
@@ -36,9 +36,21 @@
int mProgFd;
std::string mTpProgPath;
std::string mTpNeverLoadProgPath;
- std::string mTpMapPath;;
+ std::string mTpMapPath;
void SetUp() {
+ /*
+ * b/326156952
+ *
+ * Kernels prior to 5.11 used rlimit memlock accounting for bpf memory
+ * allocations, and therefore require increasing the rlimit of this
+ * process for the maps to be created successfully.
+ *
+ * 5.11 introduces cgroup-based accounting as discussed here:
+ * https://lore.kernel.org/bpf/20201201215900.3569844-1-guro@fb.com/
+ */
+ if (!isAtLeastKernelVersion(5, 11, 0)) EXPECT_EQ(setrlimitForTest(), 0);
+
mTpProgPath = "/sys/fs/bpf/prog_" + GetParam() + "_tracepoint_sched_sched_switch";
unlink(mTpProgPath.c_str());