summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-03-03 08:06:08 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-03-03 08:06:08 +0000
commit5db68dbf66f5d4542ce11747e3898dfe897ee672 (patch)
tree5d5d4ff9f0f1ebe0b341d113072dbea74bddc06c
parentf988c7bad68ae31653539ba347d2b0fe1fe67dd2 (diff)
parente5b8aa240bd9665ee275df92824a9c32229a15c8 (diff)
downloadbpf-5db68dbf66f5d4542ce11747e3898dfe897ee672.tar.gz
Merge "make failure on map creation returns -errno" am: e5b8aa240b
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/1611659 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: If411792759899077e248365d980bf77eece2a274
-rw-r--r--libbpf_android/Loader.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/libbpf_android/Loader.cpp b/libbpf_android/Loader.cpp
index 01f8964..e0d56e4 100644
--- a/libbpf_android/Loader.cpp
+++ b/libbpf_android/Loader.cpp
@@ -434,6 +434,7 @@ static int createMaps(const char* elfPath, ifstream& elfFile, vector<unique_fd>&
for (int i = 0; i < (int)mapNames.size(); i++) {
unique_fd fd;
+ int saved_errno;
// Format of pin location is /sys/fs/bpf/<prefix>map_<filename>_<mapname>
string mapPinLoc;
bool reuse = false;
@@ -441,16 +442,17 @@ static int createMaps(const char* elfPath, ifstream& elfFile, vector<unique_fd>&
mapPinLoc = string(BPF_FS_PATH) + prefix + "map_" + fname + "_" + string(mapNames[i]);
if (access(mapPinLoc.c_str(), F_OK) == 0) {
fd.reset(bpf_obj_get(mapPinLoc.c_str()));
+ saved_errno = errno;
ALOGD("bpf_create_map reusing map %s, ret: %d\n", mapNames[i].c_str(), fd.get());
reuse = true;
} else {
fd.reset(bpf_create_map(md[i].type, mapNames[i].c_str(), md[i].key_size, md[i].value_size,
md[i].max_entries, md[i].map_flags));
+ saved_errno = errno;
ALOGD("bpf_create_map name %s, ret: %d\n", mapNames[i].c_str(), fd.get());
}
- if (fd < 0) return fd;
- if (fd == 0) return -EINVAL;
+ if (fd < 0) return -saved_errno;
if (!reuse) {
ret = bpf_obj_pin(fd, mapPinLoc.c_str());