mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-25 01:07:22 +00:00
mount-encrypted: issue sync()s between umount stages
In an effort to reduce the chances of a kernel bug wrecking filesystems during encrypted-stateful shutdown, add explicit sync() calls during shutdown. BUG=chrome-os-partner:17610 TEST=link build, shutdown with simulated panic in LOOP_CLR_FD results in successful journal replays BRANCH=None Change-Id: I4be981ebd0270d275ae81a79e3195bc72b70d984 Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/43736 Reviewed-by: Grant Grundler <grundler@chromium.org>
This commit is contained in:
@@ -1063,6 +1063,12 @@ static int shutdown(void)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Force syncs to make sure we don't tickle racey/buggy kernel
|
||||
* routines that might be causing crosbug.com/p/17610.
|
||||
*/
|
||||
sync();
|
||||
|
||||
/* Optionally run fsck on the device after umount. */
|
||||
if (getenv("MOUNT_ENCRYPTED_FSCK")) {
|
||||
char *cmd;
|
||||
@@ -1081,12 +1087,15 @@ static int shutdown(void)
|
||||
INFO("Removing %s.", dmcrypt_dev);
|
||||
if (!dm_teardown(dmcrypt_dev))
|
||||
ERROR("dm_teardown(%s)", dmcrypt_dev);
|
||||
sync();
|
||||
|
||||
INFO("Unlooping %s (named %s).", block_path, dmcrypt_name);
|
||||
if (!loop_detach_name(dmcrypt_name)) {
|
||||
ERROR("loop_detach_name(%s)", dmcrypt_name);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
sync();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user