diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp
index 0a86928f3fe47d1e04f4bf1960bea19be74b75b2..09b97850712ca15ce625e8311e9fcbc6eb8fc515 100644
--- a/src/modules/partition/core/PartitionCoreModule.cpp
+++ b/src/modules/partition/core/PartitionCoreModule.cpp
@@ -105,11 +105,19 @@ PartitionCoreModule::PartitionCoreModule( QObject* parent )
     if ( !KPMHelpers::initKPMcore() )
         qFatal( "Failed to initialize KPMcore backend" );
     FileSystemFactory::init();
-    init();
 }
 
+
 void
 PartitionCoreModule::init()
+{
+    QMutexLocker locker( &m_revertMutex );
+    doInit();
+}
+
+
+void
+PartitionCoreModule::doInit()
 {
     CoreBackend* backend = CoreBackendManager::self()->backend();
     QList< Device* > devices = backend->scanDevices( true );
@@ -546,7 +554,7 @@ PartitionCoreModule::revert()
     QMutexLocker locker( &m_revertMutex );
     qDeleteAll( m_deviceInfos );
     m_deviceInfos.clear();
-    init();
+    doInit();
     updateIsDirty();
     emit reverted();
 }
diff --git a/src/modules/partition/core/PartitionCoreModule.h b/src/modules/partition/core/PartitionCoreModule.h
index 75126b25a76d13c6cc224bd4bc39e6717bf10c1e..46f1b7be8b520045eb58a28186f9c1bf0be9f062 100644
--- a/src/modules/partition/core/PartitionCoreModule.h
+++ b/src/modules/partition/core/PartitionCoreModule.h
@@ -64,6 +64,8 @@ public:
     PartitionCoreModule( QObject* parent = nullptr );
     ~PartitionCoreModule();
 
+    void init();
+
     DeviceModel* deviceModel() const;
 
     PartitionModel* partitionModelForDevice( Device* device ) const;
@@ -159,7 +161,7 @@ private:
     bool m_isDirty = false;
     QString m_bootLoaderInstallPath;
 
-    void init();
+    void doInit();
     void updateHasRootMountPoint();
     void updateIsDirty();
     void scanForEfiSystemPartitions();
diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp
index 22f74e3f631c778b3a375268e40c51f49bbc7035..0362c357baaf5d5fde0e776794d2591933851f35 100644
--- a/src/modules/partition/gui/PartitionViewStep.cpp
+++ b/src/modules/partition/gui/PartitionViewStep.cpp
@@ -58,8 +58,8 @@
 
 PartitionViewStep::PartitionViewStep( QObject* parent )
     : Calamares::ViewStep( parent )
-    , m_widget( new QStackedWidget() )
     , m_core( nullptr )
+    , m_widget( new QStackedWidget() )
     , m_choicePage( nullptr )
     , m_manualPartitionPage( nullptr )
 {
@@ -69,6 +69,7 @@ PartitionViewStep::PartitionViewStep( QObject* parent )
     m_widget->addWidget( m_waitingWidget );
     CALAMARES_RETRANSLATE( qobject_cast< WaitingWidget* >( m_waitingWidget )->setText( tr( "Gathering system information..." ) ); )
 
+    m_core = new PartitionCoreModule( this ); // Unusable before init is complete!
     // We're not done loading, but we need the configuration map first.
 }
 
@@ -76,8 +77,8 @@ PartitionViewStep::PartitionViewStep( QObject* parent )
 void
 PartitionViewStep::initPartitionCoreModule()
 {
-    Q_ASSERT( !m_core );
-    m_core = new PartitionCoreModule( this );
+    Q_ASSERT( m_core );
+    m_core->init();
 }