diff -uar truecrypt-6.3a-source.orig/Core/Unix/Linux/CoreLinux.cpp truecrypt-6.3a-source/Core/Unix/Linux/CoreLinux.cpp --- truecrypt-6.3a-source.orig/Core/Unix/Linux/CoreLinux.cpp 2009-11-22 16:09:54.000000000 +0100 +++ truecrypt-6.3a-source/Core/Unix/Linux/CoreLinux.cpp 2010-04-04 16:47:42.000000000 +0200 @@ -90,13 +90,23 @@ void CoreLinux::DetachLoopDevice (const DevicePath &devicePath) const { list args; + list args2; args.push_back ("-d"); args.push_back (devicePath); + /* args2 needed to umount loop device before detaching it + * by Enrico Lo Tauro (neongen) + */ + args2.push_back (devicePath); for (int t = 0; true; t++) { try { + try + { + Process::Execute ("umount", args2); + } + catch (ExecutedProcessFailed&) { } Process::Execute ("losetup", args); break; }