diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 95d46f992865903dd2dd2e7ce6655117ccc7621c..069fb6602b80cae6c7b1d538ab37a555a9b19945 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -338,29 +338,24 @@ sieve_storage_alloc_from_class(struct sieve_instance *svinst,
 	return 0;
 }
 
-int sieve_storage_alloc(struct sieve_instance *svinst, struct event *event,
+int sieve_storage_alloc(struct sieve_instance *svinst,
+			struct event *event_parent,
 			const struct sieve_storage *storage_class,
 			const char *data, enum sieve_storage_flags flags,
 			bool main, struct sieve_storage **storage_r,
 			enum sieve_error *error_code_r, const char **error_r)
 {
+	struct event *storage_event, *event;
 	struct sieve_storage *storage;
 	int ret;
 
 	*storage_r = NULL;
 	sieve_error_args_init(&error_code_r, &error_r);
 
-	if (event != NULL)
-		event_ref(event);
-	else {
-		struct event *storage_event;
-
-		storage_event = sieve_storage_create_event(
-			svinst, svinst->event);
-		event = sieve_storage_create_driver_event(
-			storage_event, storage_class->driver_name);
-		event_unref(&storage_event);
-	}
+	storage_event = sieve_storage_create_event(svinst, event_parent);
+	event = sieve_storage_create_driver_event(storage_event,
+						  storage_class->driver_name);
+	event_unref(&storage_event);
 
 	ret = sieve_storage_alloc_from_class(svinst, event, storage_class,
 					     data, flags,