add bpf_map_def support for setting uid/gid/mode
Test: build, atest, adb shell ls -lZ /sys/fs/bpf
Bug: 149434314
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie4001fbe16b4bc84fc8ec7138ae4928cd86f5ce7
diff --git a/libbpf_android/Loader.cpp b/libbpf_android/Loader.cpp
index 18dabba..1c27f9e 100644
--- a/libbpf_android/Loader.cpp
+++ b/libbpf_android/Loader.cpp
@@ -24,6 +24,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/stat.h>
#include <sys/utsname.h>
#include <unistd.h>
@@ -411,7 +412,11 @@
if (!reuse) {
ret = bpf_obj_pin(fd, mapPinLoc.c_str());
- if (ret < 0) return ret;
+ if (ret) return -errno;
+ ret = chown(mapPinLoc.c_str(), (uid_t)md[i].uid, (gid_t)md[i].gid);
+ if (ret) return -errno;
+ ret = chmod(mapPinLoc.c_str(), md[i].mode);
+ if (ret) return -errno;
}
mapFds.push_back(std::move(fd));