OSDN Git Service

Another fix for encryption
authorKen Sumrall <ksumrall@android.com>
Thu, 18 Oct 2012 03:57:14 +0000 (20:57 -0700)
committerKen Sumrall <ksumrall@android.com>
Thu, 18 Oct 2012 03:57:14 +0000 (20:57 -0700)
The previous problem of the framework not properly restarting after accepting
the password to decrypt the storage is also a problem when restarting the
framework to display the encryption progress screen.  So like the previous
hacky fix, add a sleep to wait a few moments before proceeding.  Also,
increase the sleep of the previous fix from 1 second to 2, as the problem
was seen once more in testing.  A proper fix has been designed and hopefully
will work and be checked-in RSN.

Change-Id: Icc2c072ce7f7ebcdea22cd7ff8cb2b87a627c578

cryptfs.c

index 67533a4..bcacc39 100644 (file)
--- a/cryptfs.c
+++ b/cryptfs.c
@@ -688,8 +688,12 @@ int cryptfs_restart(void)
     property_set("vold.decrypt", "trigger_reset_main");
     SLOGD("Just asked init to shut down class main\n");
 
-    /* Give everything a chance to shutdown */
-    sleep(1);
+    /* Ugh, shutting down the framework is not synchronous, so until it
+     * can be fixed, this horrible hack will wait a moment for it all to
+     * shut down before proceeding.  Without it, some devices cannot
+     * restart the graphics services.
+     */
+    sleep(2);
 
     /* Now that the framework is shutdown, we should be able to umount()
      * the tmpfs filesystem, and mount the real one.
@@ -1275,6 +1279,13 @@ int cryptfs_enable(char *howarg, char *passwd)
             goto error_shutting_down;
         }
 
+        /* Ugh, shutting down the framework is not synchronous, so until it
+         * can be fixed, this horrible hack will wait a moment for it all to
+         * shut down before proceeding.  Without it, some devices cannot
+         * restart the graphics services.
+         */
+        sleep(2);
+
         /* startup service classes main and late_start */
         property_set("vold.decrypt", "trigger_restart_min_framework");
         SLOGD("Just triggered restart_min_framework\n");