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());