summaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorKen Sumrall <ksumrall@android.com>2011-02-17 18:09:47 -0800
committerKen Sumrall <ksumrall@android.com>2011-02-17 18:09:47 -0800
commitdd4d786cbf993a024fcd0f926fd40b90c8a08d51 (patch)
tree4a245cdea58cb73ae22ba852dab8857fda61975c /init
parent9ac8484e0b677802474e2fd73edb9cbac02d98a6 (diff)
downloadsystem_core-dd4d786cbf993a024fcd0f926fd40b90c8a08d51.zip
system_core-dd4d786cbf993a024fcd0f926fd40b90c8a08d51.tar.gz
system_core-dd4d786cbf993a024fcd0f926fd40b90c8a08d51.tar.bz2
Fix for bug 3379244, non-eMMC devices don't start all services.
Fix for non-eMMC based devices to properly start the "on nonencrypted" action. Change-Id: I5d2966db352b02f1a1724fb105e1cefc46037e42
Diffstat (limited to 'init')
-rw-r--r--init/builtins.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/init/builtins.c b/init/builtins.c
index 490ad48..d9a9634 100644
--- a/init/builtins.c
+++ b/init/builtins.c
@@ -286,6 +286,7 @@ int do_mount(int nargs, char **args)
unsigned flags = 0;
int n, i;
int wait = 0;
+ char *prop;
for (n = 4; n < nargs; n++) {
for (i = 0; mount_flags[i].name; i++) {
@@ -322,7 +323,7 @@ int do_mount(int nargs, char **args)
return -1;
}
- return 0;
+ goto exit_success;
} else if (!strncmp(source, "loop@", 5)) {
int mode, loop, fd;
struct loop_info info;
@@ -353,7 +354,7 @@ int do_mount(int nargs, char **args)
}
close(loop);
- return 0;
+ goto exit_success;
}
}
@@ -393,12 +394,6 @@ int do_mount(int nargs, char **args)
} else {
return -1;
}
- } else {
- if (!strcmp(target, DATA_MNT_POINT)) {
- /* We succeeded in mounting /data, so it's not encrypted */
- property_set("ro.crypto.state", "unencrypted");
- action_for_each_trigger("nonencrypted", action_add_queue_tail);
- }
}
if (!strcmp(target, DATA_MNT_POINT)) {
@@ -414,8 +409,25 @@ int do_mount(int nargs, char **args)
snprintf(fs_flags, sizeof(fs_flags), "0x%8.8x", flags);
property_set("ro.crypto.fs_flags", fs_flags);
}
- return 0;
}
+
+exit_success:
+ /* If not running encrypted, then set the property saying we are
+ * unencrypted, and also trigger the action for a nonencrypted system.
+ */
+ if (!strcmp(target, DATA_MNT_POINT)) {
+ prop = property_get("ro.crypto.state");
+ if (! prop) {
+ prop = "notset";
+ }
+ if (strcmp(prop, "encrypted")) {
+ property_set("ro.crypto.state", "unencrypted");
+ action_for_each_trigger("nonencrypted", action_add_queue_tail);
+ }
+ }
+
+ return 0;
+
}
int do_setkey(int nargs, char **args)