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

Commit 86cddf40 authored by Sami Tolvanen's avatar Sami Tolvanen
Browse files

Do not call libcutils property_set in init through libfs_mgr

Both init and libcutils define a property_set function. The init
version sets the property directly while libcutils simply calls
__system_property_set, which sends a message to init to set the
property.

Since libfs_mgr is statically linked to libcutils, any calls to
property_set end up sending a message to init and waiting for a
response. When libfs_mgr is further statically linked to init,
this leads to init sending a message to itself when property_set
is called in fs_mgr.

Because send_prop_msg in bionic only waits for a response for
250ms, this does not cause a deadlock. However, using libcutils
to set a property in the init process is hardly a good idea.

This change removes the property_set call from fs_mgr_verity.c.
If this property is required later, it should be set elsewhere.

Change-Id: I6a28cccb1ccce960841af20a4b20c32d424b5524
parent 291ce5b8
Loading
Loading
Loading
Loading
+1 −27
Original line number Original line Diff line number Diff line
@@ -381,27 +381,6 @@ static int test_access(char *device) {
    return -1;
    return -1;
}
}


static int set_verified_property(char *name) {
    int ret;
    char *key;
    ret = asprintf(&key, "partition.%s.verified", name);
    if (ret < 0) {
        ERROR("Error formatting verified property\n");
        return ret;
    }
    ret = PROP_NAME_MAX - strlen(key);
    if (ret < 0) {
        ERROR("Verified property name is too long\n");
        free(key);
        return -1;
    }
    ret = property_set(key, "1");
    if (ret < 0)
        ERROR("Error setting verified property %s: %d\n", key, ret);
    free(key);
    return ret;
}

static int check_verity_restart(const char *fname)
static int check_verity_restart(const char *fname)
{
{
    char buffer[VERITY_KMSG_BUFSIZE + 1];
    char buffer[VERITY_KMSG_BUFSIZE + 1];
@@ -774,12 +753,7 @@ int fs_mgr_setup_verity(struct fstab_rec *fstab) {
        goto out;
        goto out;
    }
    }


    if (mode == VERITY_MODE_LOGGING) {
    retval = FS_MGR_SETUP_VERITY_SUCCESS;
    retval = FS_MGR_SETUP_VERITY_SUCCESS;
    } else {
        // set the property indicating that the partition is verified
        retval = set_verified_property(mount_point);
    }


out:
out:
    if (fd != -1) {
    if (fd != -1) {