diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp
index 536038b29a4b298b48cab4e2334c9be345993cbb..ad4fbf9677b67c493f7706a02f381350f7c33af6 100644
--- a/src/jamidht/jamiaccount.cpp
+++ b/src/jamidht/jamiaccount.cpp
@@ -1146,7 +1146,7 @@ JamiAccount::revokeDevice(const std::string& password, const std::string& device
             emitSignal<DRing::ConfigurationSignal::DeviceRevocationEnded>(getAccountID(), device, 2);
             return;
         }
-        std::lock_guard<std::mutex> lock(deviceListMutex_);
+        std::unique_lock<std::mutex> lock(deviceListMutex_);
         foundAccountDevice(crt);
         AccountArchive a;
         try {
@@ -1168,6 +1168,7 @@ JamiAccount::revokeDevice(const std::string& password, const std::string& device
         saveKnownDevices();
         emitSignal<DRing::ConfigurationSignal::DeviceRevocationEnded>(getAccountID(), device, 0);
         emitSignal<DRing::ConfigurationSignal::KnownDevicesChanged>(getAccountID(), getKnownDevices());
+        lock.unlock();
         syncDevices();
     });
     return true;