From dd4d786cbf993a024fcd0f926fd40b90c8a08d51 Mon Sep 17 00:00:00 2001 From: Ken Sumrall Date: Thu, 17 Feb 2011 18:09:47 -0800 Subject: 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 --- init/builtins.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'init') 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) -- cgit v1.1