diff options
author | Maciej Żenczykowski <maze@google.com> | 2021-03-01 23:09:54 -0800 |
---|---|---|
committer | Maciej Żenczykowski <maze@google.com> | 2021-03-02 07:46:32 +0000 |
commit | 2c3721379641ed798f4f47e6b0cf473d9cc1b4bd (patch) | |
tree | 5d5d4ff9f0f1ebe0b341d113072dbea74bddc06c /libbpf_android | |
parent | 30af4b5487c53ecc7a32442f371e0cbc47c13bf8 (diff) | |
download | bpf-2c3721379641ed798f4f47e6b0cf473d9cc1b4bd.tar.gz |
make failure on map creation returns -errno
This slightly improves error logging.
(also fd == 0 is not an error condition)
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I135e7405c508951fba632c634bc4e2d2161fc940
Diffstat (limited to 'libbpf_android')
-rw-r--r-- | libbpf_android/Loader.cpp | 6 |
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()); |