Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71dd7064 authored by Tom Cherry's avatar Tom Cherry Committed by Yifan Hong
Browse files

ueventd: deprecate paths without /etc/

ueventd.rc scripts belong in the /etc/ directory of their given
partition, not the root of the partition.  This can cause problems,
especially since Android.bp cannot write to the root directly, forcing
vendors to use Android.mk for these files.  Note that
/system/etc/ueventd.rc moved long ago.

Test: Tree-hugger
Change-Id: I2dcaafc3c3f687f76ab6bc38af979c8b43346db0
parent f2d359cb
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

#include "ueventd.h"

#include <android/api-level.h>
#include <ctype.h>
#include <dirent.h>
#include <fcntl.h>
@@ -266,6 +267,17 @@ void ColdBoot::Run() {
    LOG(INFO) << "Coldboot took " << cold_boot_timer.duration().count() / 1000.0f << " seconds";
}

static UeventdConfiguration GetConfiguration() {
    // TODO: Remove these legacy paths once Android S is no longer supported.
    if (android::base::GetIntProperty("ro.product.first_api_level", 10000) <= __ANDROID_API_S__) {
        auto hardware = android::base::GetProperty("ro.hardware", "");
        return ParseConfig({"/system/etc/ueventd.rc", "/vendor/ueventd.rc", "/odm/ueventd.rc",
                            "/ueventd." + hardware + ".rc"});
    }

    return ParseConfig({"/system/etc/ueventd.rc"});
}

int ueventd_main(int argc, char** argv) {
    /*
     * init sets the umask to 077 for forked processes. We need to
@@ -283,7 +295,7 @@ int ueventd_main(int argc, char** argv) {

    std::vector<std::unique_ptr<UeventHandler>> uevent_handlers;

    auto ueventd_configuration = ParseConfig("/system/etc/ueventd.rc");
    auto ueventd_configuration = GetConfiguration();

    uevent_handlers.emplace_back(std::make_unique<DeviceHandler>(
            std::move(ueventd_configuration.dev_permissions),
+4 −2
Original line number Diff line number Diff line
@@ -230,7 +230,7 @@ Result<void> SubsystemParser::EndSection() {
    return {};
}

UeventdConfiguration ParseConfig(const std::string& config) {
UeventdConfiguration ParseConfig(const std::vector<std::string>& configs) {
    Parser parser;
    UeventdConfiguration ueventd_configuration;

@@ -260,7 +260,9 @@ UeventdConfiguration ParseConfig(const std::string& config) {
                               std::bind(ParseEnabledDisabledLine, _1,
                                         &ueventd_configuration.enable_parallel_restorecon));

    for (const auto& config : configs) {
        parser.ParseConfig(config);
    }

    return ueventd_configuration;
}
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ struct UeventdConfiguration {
    bool enable_parallel_restorecon = false;
};

UeventdConfiguration ParseConfig(const std::string& config);
UeventdConfiguration ParseConfig(const std::vector<std::string>& configs);

}  // namespace init
}  // namespace android
+2 −3
Original line number Diff line number Diff line
import /vendor/ueventd.rc
import /odm/ueventd.rc
import /ueventd.${ro.hardware}.rc
import /vendor/etc/ueventd.rc
import /odm/etc/ueventd.rc

firmware_directories /etc/firmware/ /odm/firmware/ /vendor/firmware/ /firmware/image/
uevent_socket_rcvbuf_size 16M