diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c
index 9c09c60fd4690c29110e062158ff84e0a721c503..3ca4393c010d28def2b619fa936e43a90a43a26e 100644
--- a/src/lib-sieve/sieve.c
+++ b/src/lib-sieve/sieve.c
@@ -136,6 +136,10 @@ void sieve_deinit(struct sieve_instance **_svinst)
 {
 	struct sieve_instance *svinst = *_svinst;
 
+	if (svinst == NULL)
+		return;
+	*_svinst = NULL;
+
 	sieve_plugins_unload(svinst);
 	sieve_storages_deinit(svinst);
 	sieve_extensions_deinit(svinst);
@@ -144,7 +148,6 @@ void sieve_deinit(struct sieve_instance **_svinst)
 	event_unref(&svinst->event);
 
 	pool_unref(&(svinst)->pool);
-	*_svinst = NULL;
 }
 
 void sieve_set_extensions(struct sieve_instance *svinst, const char *extensions)
diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
index bdfa1f9dc2c61876a5c0f2c350f15031057677d0..9230ae720ab813fbf26ba5dd36cd87886b5948fa 100644
--- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c
+++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
@@ -1127,8 +1127,7 @@ static void imap_filter_sieve_user_deinit(struct mail_user *user)
 		sieve_storage_unref(&ifsuser->storage);
 	if (ifsuser->global_storage != NULL)
 		sieve_storage_unref(&ifsuser->global_storage);
-	if (ifsuser->svinst != NULL)
-		sieve_deinit(&ifsuser->svinst);
+	sieve_deinit(&ifsuser->svinst);
 	if (ifsuser->dup_db != NULL)
 		mail_duplicate_db_deinit(&ifsuser->dup_db);