diff -uarN truecrypt-7.1-source.orig/Core/Unix/Linux/CoreLinux.cpp truecrypt-7.1-source/Core/Unix/Linux/CoreLinux.cpp --- truecrypt-7.1-source.orig/Core/Unix/Linux/CoreLinux.cpp 2011-09-01 15:15:42.000000000 +0200 +++ truecrypt-7.1-source/Core/Unix/Linux/CoreLinux.cpp 2011-09-22 11:42:40.619115300 +0200 @@ -91,13 +91,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; }