Fix encryption on certain devices
There is a race in the encryption code that after it accepts the decryption password, it tells init to kill all the processes in class "main", then it mounts the decrypted filesystem, preps it, and restarts the framework. For an unknown reason on some devices, the new framework sometimes starts up before init has killed and reaped all the old processes. The proper fix is to make the killing of the old framework synchronous, so vold waits till all the processes have died. But with factory rom a few days away, the much more pragmatic solution of adding a sleep of 1 second after telling init to kill the old framework will suffice. Bug: 7271212 Change-Id: Ie971cd04abbc6f3f6500b4acd79d3b3b26d9561c
This commit is contained in:
parent
7a3c3d462e
commit
9dedfd473d
1 changed files with 3 additions and 0 deletions
|
@ -688,6 +688,9 @@ int cryptfs_restart(void)
|
||||||
property_set("vold.decrypt", "trigger_reset_main");
|
property_set("vold.decrypt", "trigger_reset_main");
|
||||||
SLOGD("Just asked init to shut down class main\n");
|
SLOGD("Just asked init to shut down class main\n");
|
||||||
|
|
||||||
|
/* Give everything a chance to shutdown */
|
||||||
|
sleep(1);
|
||||||
|
|
||||||
/* Now that the framework is shutdown, we should be able to umount()
|
/* Now that the framework is shutdown, we should be able to umount()
|
||||||
* the tmpfs filesystem, and mount the real one.
|
* the tmpfs filesystem, and mount the real one.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue