diff --git a/loader/Loader.cpp b/loader/Loader.cpp index be12a6f..57a1259 100644 --- a/loader/Loader.cpp +++ b/loader/Loader.cpp @@ -850,21 +850,6 @@ int loadAllElfObjects() { return retVal; } -int createSysFsBpfVendor() { - mode_t prevUmask = umask(0); - - errno = 0; - int ret = mkdir("/sys/fs/bpf/vendor", S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO); - if (ret && errno != EEXIST) { - const int err = errno; - ALOGE("Failed to create directory: /sys/fs/bpf/vendor, ret: %s", strerror(err)); - return -err; - } - - umask(prevUmask); - return 0; -} - } // namespace bpf } // namespace android @@ -877,8 +862,6 @@ void vendorBpfLoader() { const char* argv[] = {"/system/bin/bpfloader", NULL}; android::base::InitLogging(const_cast(argv), &android::base::KernelLogger); - if (android::bpf::createSysFsBpfVendor()) exit(120); - // Load all ELF objects, create programs and maps, and pin them if (android::bpf::loadAllElfObjects()) { ALOGE("=== CRITICAL FAILURE LOADING BPF PROGRAMS FROM /vendor/etc/bpf ==="); diff --git a/loader/bpfloader.rs b/loader/bpfloader.rs index e9bfd6e..bfa5d74 100644 --- a/loader/bpfloader.rs +++ b/loader/bpfloader.rs @@ -644,6 +644,10 @@ fn main() { load_libbpf_progs(); info!("Loading legacy BPF progs"); + if let Err(e) = create_dir(Path::new("/sys/fs/bpf/vendor")) { + panic!("Error during mkdir /sys/fs/bpf/vendor: {e}"); + }; + // SAFETY: Linking in the existing legacy vendor bpfloader functionality. // The following bindgen function can abort() or exit() on failure, // but will usually execve().