bpfloader: use non-overwriting rename am: e15229f055 am: cbe811c65e
Original change: https://android-review.googlesource.com/c/platform/system/bpf/+/2540010
Change-Id: I4e756212706eba1151fe6f8a08c792a34d0f8ec2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/libbpf_android/Loader.cpp b/libbpf_android/Loader.cpp
index ae2a60f..a8ef1a0 100644
--- a/libbpf_android/Loader.cpp
+++ b/libbpf_android/Loader.cpp
@@ -17,6 +17,7 @@
#define LOG_TAG "LibBpfLoader"
#include <errno.h>
+#include <fcntl.h>
#include <linux/bpf.h>
#include <linux/elf.h>
#include <log/log.h>
@@ -901,7 +902,8 @@
ALOGE("create %s -> %d [%d:%s]", createLoc.c_str(), ret, err, strerror(err));
return -err;
}
- ret = rename(createLoc.c_str(), mapPinLoc.c_str());
+ ret = renameat2(AT_FDCWD, createLoc.c_str(),
+ AT_FDCWD, mapPinLoc.c_str(), RENAME_NOREPLACE);
if (ret) {
int err = errno;
ALOGE("rename %s %s -> %d [%d:%s]", createLoc.c_str(), mapPinLoc.c_str(), ret,
@@ -1153,7 +1155,8 @@
ALOGE("create %s -> %d [%d:%s]", createLoc.c_str(), ret, err, strerror(err));
return -err;
}
- ret = rename(createLoc.c_str(), progPinLoc.c_str());
+ ret = renameat2(AT_FDCWD, createLoc.c_str(),
+ AT_FDCWD, progPinLoc.c_str(), RENAME_NOREPLACE);
if (ret) {
int err = errno;
ALOGE("rename %s %s -> %d [%d:%s]", createLoc.c_str(), progPinLoc.c_str(), ret,