Index: uspace/drv/fb/kfb/port.c
===================================================================
--- uspace/drv/fb/kfb/port.c	(revision 62018a04d41beba5b38adae3a975d48e9074fb6e)
+++ uspace/drv/fb/kfb/port.c	(revision 86307480d844894603d178493737b7d38c31e005)
@@ -377,4 +377,10 @@
 		assert(gc_id == 42);
 
+		if (kfb->addr != AS_AREA_ANY) {
+			/* This means there already is a GC connection */
+			async_answer_0(icall, EBUSY);
+			return;
+		}
+
 		rc = physmem_map(kfb->paddr + kfb->offset,
 		    ALIGN_UP(kfb->size, PAGE_SIZE) >> PAGE_WIDTH,
@@ -392,12 +398,12 @@
 		rc = physmem_unmap(kfb->addr);
 		if (rc == EOK)
-			kfb->addr = NULL;
+			kfb->addr = AS_AREA_ANY;
 	}
 
 	return;
 error:
-	if (kfb->addr != NULL) {
+	if (kfb->addr != AS_AREA_ANY) {
 		if (physmem_unmap(kfb->addr) == EOK)
-			kfb->addr = NULL;
+			kfb->addr = AS_AREA_ANY;
 	}
 
Index: uspace/srv/hid/display/main.c
===================================================================
--- uspace/srv/hid/display/main.c	(revision 62018a04d41beba5b38adae3a975d48e9074fb6e)
+++ uspace/srv/hid/display/main.c	(revision 86307480d844894603d178493737b7d38c31e005)
@@ -121,4 +121,5 @@
 		log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server: %s.", str_error(rc));
 		rc = EEXIST;
+		goto error;
 	}
 
Index: uspace/srv/hid/display/output.c
===================================================================
--- uspace/srv/hid/display/output.c	(revision 62018a04d41beba5b38adae3a975d48e9074fb6e)
+++ uspace/srv/hid/display/output.c	(revision 86307480d844894603d178493737b7d38c31e005)
@@ -163,4 +163,10 @@
 	fibril_mutex_unlock(&output->lock);
 
+	/* Fail if we did not open at least one device */
+	if (list_empty(&output->ddevs)) {
+		log_msg(LOG_DEFAULT, LVL_ERROR, "No output device found.");
+		return ENOENT;
+	}
+
 	return rc;
 }
