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

Commit 3b316ee2 authored by Jiyong Park's avatar Jiyong Park
Browse files

Load build sysprops early

*/build.prop files are now loaded much earlier than before; from 'on
post-fs' to the time when the property service is started which is
before init starts the action loop.

This ensures that all processes that are launched by init have a
consistent view of system properties. Previously, the processes that
started before 'on post-fs' were initially with the small number of
sysprops loaded from */default.prop and then suddenly get additional
sysprops from */build.prop while they are executing.

Bug: 122714998
Test: device boots

Change-Id: Ic07528421dfbe8d4f43673cea41175d33cfbf298
parent 91fa1403
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -482,9 +482,8 @@ Commands
  -f: force installation of the module even if the version of the running kernel
  and the version of the kernel for which the module was compiled do not match.

`load_all_props`
> Loads properties from /system, /vendor, et cetera.
  This is included in the default init.rc.
`load_system_props`
> (This action is deprecated and no-op.)

`load_persist_props`
> Loads persistent properties when /data has been decrypted.
+1 −1
Original line number Diff line number Diff line
@@ -972,7 +972,7 @@ static Result<Success> do_load_persist_props(const BuiltinArguments& args) {
}

static Result<Success> do_load_system_props(const BuiltinArguments& args) {
    load_system_props();
    LOG(INFO) << "deprecated action `load_system_props` called.";
    return Success();
}

+18 −17
Original line number Diff line number Diff line
@@ -699,22 +699,6 @@ static void update_sys_usb_config() {
    }
}

void property_load_boot_defaults() {
    if (!load_properties_from_file("/system/etc/prop.default", NULL)) {
        // Try recovery path
        if (!load_properties_from_file("/prop.default", NULL)) {
            // Try legacy path
            load_properties_from_file("/default.prop", NULL);
        }
    }
    load_properties_from_file("/product/build.prop", NULL);
    load_properties_from_file("/product_services/build.prop", NULL);
    load_properties_from_file("/odm/default.prop", NULL);
    load_properties_from_file("/vendor/default.prop", NULL);

    update_sys_usb_config();
}

static void load_override_properties() {
    if (ALLOW_LOCAL_PROP_OVERRIDE) {
        load_properties_from_file("/data/local.prop", NULL);
@@ -779,12 +763,29 @@ void load_recovery_id_prop() {
    close(fd);
}

void load_system_props() {
void property_load_boot_defaults() {
    // TODO(b/117892318): merge prop.default and build.prop files into one
    // TODO(b/122864654): read the prop files from all partitions and then
    // resolve the duplication by their origin so that RO and non-RO properties
    // have a consistent overriding order.
    if (!load_properties_from_file("/system/etc/prop.default", NULL)) {
        // Try recovery path
        if (!load_properties_from_file("/prop.default", NULL)) {
            // Try legacy path
            load_properties_from_file("/default.prop", NULL);
        }
    }
    load_properties_from_file("/product/build.prop", NULL);
    load_properties_from_file("/product_services/build.prop", NULL);
    load_properties_from_file("/odm/default.prop", NULL);
    load_properties_from_file("/vendor/default.prop", NULL);
    load_properties_from_file("/system/build.prop", NULL);
    load_properties_from_file("/odm/build.prop", NULL);
    load_properties_from_file("/vendor/build.prop", NULL);
    load_properties_from_file("/factory/factory.prop", "ro.*");
    load_recovery_id_prop();

    update_sys_usb_config();
}

static int SelinuxAuditCallback(void* data, security_class_t /*cls*/, char* buf, size_t len) {
+0 −6
Original line number Diff line number Diff line
@@ -346,12 +346,6 @@ on late-init
    trigger boot

on post-fs
    # Load properties from
    #     /system/build.prop,
    #     /odm/build.prop,
    #     /vendor/build.prop and
    #     /factory/factory.prop
    load_system_props
    start vold
    exec - system system -- /system/bin/vdc checkpoint markBootAttempt