diff --git a/libbpf_android/BpfMapTest.cpp b/libbpf_android/BpfMapTest.cpp index 6c28c05..a3c9004 100644 --- a/libbpf_android/BpfMapTest.cpp +++ b/libbpf_android/BpfMapTest.cpp @@ -140,7 +140,7 @@ TEST_F(BpfMapTest, reset) { uint32_t value_write = TEST_VALUE1; writeToMapAndCheck(testMap, key, value_write); - testMap.reset(); + testMap.reset(-1); checkMapInvalid(testMap); ASSERT_GT(0, findMapEntry(testMap.getMap(), &key, &value_write)); ASSERT_EQ(EBADF, errno); diff --git a/libbpf_android/include/bpf/BpfMap.h b/libbpf_android/include/bpf/BpfMap.h index 4b941a8..243d9dc 100644 --- a/libbpf_android/include/bpf/BpfMap.h +++ b/libbpf_android/include/bpf/BpfMap.h @@ -131,12 +131,12 @@ class BpfMap { // Move constructor void operator=(BpfMap&& other) noexcept { mMapFd = std::move(other.mMapFd); - other.reset(); + other.reset(-1); } - void reset(int fd = -1) { - mMapFd.reset(fd); - } + void reset(base::unique_fd fd) = delete; + + void reset(int fd) { mMapFd.reset(fd); } bool isValid() const { return mMapFd != -1; } @@ -172,7 +172,6 @@ template base::Result BpfMap::init(const char* path) { mMapFd = base::unique_fd(mapRetrieve(path, 0)); if (mMapFd == -1) { - reset(); return base::ErrnoErrorf("Pinned map not accessible or does not exist: ({})", path); } return {};