Index: uspace/srv/logger/logs.c
===================================================================
--- uspace/srv/logger/logs.c	(revision a7a16a2fd2fee7aed47cced53b3602609b317c8c)
+++ uspace/srv/logger/logs.c	(revision 91d860db87e81531b512e35266f55b417de0760e)
@@ -99,4 +99,6 @@
 	fibril_mutex_initialize(&result->guard);
 	link_initialize(&result->link);
+	refcount_init(&result->ref_counter);
+	refcount_up(&result->ref_counter);
 	result->parent = parent;
 
@@ -125,7 +127,5 @@
 		list_append(&result->link, &log_list);
 		if (result->parent != NULL) {
-			fibril_mutex_lock(&result->parent->guard);
-			result->parent->ref_counter++;
-			fibril_mutex_unlock(&result->parent->guard);
+			refcount_up(&result->parent->ref_counter);
 		}
 	}
@@ -209,12 +209,12 @@
 {
 	assert(fibril_mutex_is_locked(&log->guard));
-	assert(log->ref_counter > 0);
-
-	/* We are definitely not the last ones. */
-	if (log->ref_counter > 1) {
-		log->ref_counter--;
+
+	if (!refcount_down(&log->ref_counter)) {
+		/* We are definitely not the last ones. */
 		fibril_mutex_unlock(&log->guard);
 		return;
 	}
+
+
 
 	/*
@@ -225,4 +225,5 @@
 	 *   LOCKED(list), wants to LOCK(log)
 	 */
+	refcount_up(&log->ref_counter);
 	fibril_mutex_unlock(&log->guard);
 
@@ -234,8 +235,6 @@
 	 */
 	fibril_mutex_lock(&log->guard);
-	assert(log->ref_counter > 0);
-	log->ref_counter--;
-
-	if (log->ref_counter > 0) {
+
+	if (!refcount_down(&log->ref_counter)) {
 		/*
 		 * Meanwhile, someone else increased the ref counter.
@@ -255,6 +254,4 @@
 	 * - destroy dest (if top-level log)
 	 */
-	assert(log->ref_counter == 0);
-
 	list_remove(&log->link);
 	fibril_mutex_unlock(&log_list_guard);
@@ -314,5 +311,5 @@
 
 	assert(fibril_mutex_is_locked(&new_log->guard));
-	new_log->ref_counter++;
+	refcount_up(&new_log->ref_counter);
 
 	logs->logs[logs->logs_count] = new_log;
