diff -uarN truecrypt-6.0a-source.orig/Core/Unix/Linux/CoreLinux.cpp truecrypt-6.0a-source/Core/Unix/Linux/CoreLinux.cpp --- truecrypt-6.0a-source.orig/Core/Unix/Linux/CoreLinux.cpp 2008-07-04 21:23:54.000000000 +0200 +++ truecrypt-6.0a-source/Core/Unix/Linux/CoreLinux.cpp 2008-07-10 02:01:20.000000000 +0200 @@ -69,13 +69,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; }