Sophie

Sophie

distrib > Mageia > 1 > i586 > media > core-updates-src > by-pkgid > fd4cd2f7616f47ca9a62a573f59c142d > files > 26

kdelibs4-4.6.5-1.6.mga1.src.rpm

Index: solid/solid/backends/udisks/udisksdevice.cpp
===================================================================
--- a/solid/solid/backends/udisks/udisksdevice.cpp
+++ b/solid/solid/backends/udisks/udisksdevice.cpp	2011-11-22 22:24:34.041853516 -0300
@@ -156,7 +156,8 @@
                 return m_udi.endsWith(":media");
             } else {
                 return prop("DeviceIsPartition").toBool()
-                        || prop("IdUsage").toString()=="filesystem";
+                        || prop("IdUsage").toString()=="filesystem"
+                        || prop("IdUsage").toString()=="crypto";
             }
 
         case Solid::DeviceInterface::StorageAccess:
Index: solid/solid/backends/udisks/udisksstorageaccess.cpp
===================================================================
--- a/solid/solid/backends/udisks/udisksstorageaccess.cpp
+++ b/solid/solid/backends/udisks/udisksstorageaccess.cpp	2011-11-22 22:22:39.195853479 -0300
@@ -161,8 +161,12 @@
     {
         QString clearTextPath =  m_device->prop("LuksHolder").value<QDBusObjectPath>().path();
         if (isLuksDevice() && clearTextPath != "/") // unlocked device, lock it
+        {
             callCryptoTeardown();
-
+        }
+        else if (m_device->prop("DeviceIsLuksCleartext").toBool()) {
+            callCryptoTeardown(true); // Lock crypted parent
+        }
         else
         {
             m_teardownInProgress = false;
@@ -358,10 +362,12 @@
                        SLOT(slotDBusError(const QDBusError &)));
 }
 
-bool UDisksStorageAccess::callCryptoTeardown()
+bool UDisksStorageAccess::callCryptoTeardown(bool actOnParent)
 {
     QDBusConnection c = QDBusConnection::systemBus();
-    QDBusMessage msg = QDBusMessage::createMethodCall(UD_DBUS_SERVICE, m_device->udi(), UD_DBUS_INTERFACE_DISKS_DEVICE, "LuksLock");
+    QDBusMessage msg = QDBusMessage::createMethodCall(UD_DBUS_SERVICE,
+                        actOnParent?(m_device->prop("LuksCleartextSlave").value<QDBusObjectPath>().path()):m_device->udi(),
+                        UD_DBUS_INTERFACE_DISKS_DEVICE, "LuksLock");
     msg << QStringList();   // options, unused now
 
     return c.callWithCallback(msg, this,
Index: solid/solid/backends/udisks/udisksstorageaccess.h
===================================================================
--- a/solid/solid/backends/udisks/udisksstorageaccess.h
+++ b/solid/solid/backends/udisks/udisksstorageaccess.h	2011-11-22 22:22:39.225853478 -0300
@@ -82,7 +82,7 @@
 
     bool requestPassphrase();
     void callCryptoSetup( const QString & passphrase );
-    bool callCryptoTeardown();
+    bool callCryptoTeardown( bool actOnParent=false );
 
     QString generateReturnObjectPath();