diff --git a/cryptfs.cpp b/cryptfs.cpp index a0ee3cd..3c6ed15 100644 --- a/cryptfs.cpp +++ b/cryptfs.cpp @@ -1744,20 +1744,23 @@ static void ensure_subdirectory_unmounted(const char *prefix) { [](const std::string& s1, const std::string& s2) {return s1.length() > s2.length(); }); for (std::string& mount_point : umount_points) { - umount(mount_point.c_str()); - SLOGW("umount sub-directory mount %s\n", mount_point.c_str()); + SLOGW("unmounting sub-directory mount %s\n", mount_point.c_str()); + if (umount(mount_point.c_str()) != 0) { + SLOGE("unmounting %s failed: %s\n", mount_point.c_str(), strerror(errno)); + } } } static int wait_and_unmount(const char* mountpoint) { int i, err, rc; - // Subdirectory mount will cause a failure of umount. - ensure_subdirectory_unmounted(mountpoint); #define WAIT_UNMOUNT_COUNT 200 /* Now umount the tmpfs filesystem */ for (i = 0; i < WAIT_UNMOUNT_COUNT; i++) { + // Subdirectory mount will cause a failure of umount. + ensure_subdirectory_unmounted(mountpoint); + if (umount(mountpoint) == 0) { break; }