Index: uspace/srv/hid/input/generic/input.c
===================================================================
--- uspace/srv/hid/input/generic/input.c	(revision f3025861da728fb4754f9d1cdcfeda5675ac98f3)
+++ uspace/srv/hid/input/generic/input.c	(revision a6240a31de71ce1b22250da6712a30e0ca520c66)
@@ -39,4 +39,5 @@
 #include <adt/list.h>
 #include <bool.h>
+#include <fibril_synch.h>
 #include <ipc/services.h>
 #include <ipc/input.h>
@@ -83,4 +84,6 @@
 async_sess_t *irc_sess = NULL;
 
+static FIBRIL_MUTEX_INITIALIZE(discovery_lock);
+
 void kbd_push_data(kbd_dev_t *kdev, sysarg_t data)
 {
@@ -593,12 +596,20 @@
 	int rc;
 	
+	fibril_mutex_lock(&discovery_lock);
+	
 	rc = dev_check_new_kbdevs();
-	if (rc != EOK)
+	if (rc != EOK) {
+		fibril_mutex_unlock(&discovery_lock);
 		return rc;
+	}
 	
 	rc = dev_check_new_mousedevs();
-	if (rc != EOK)
+	if (rc != EOK) {
+		fibril_mutex_unlock(&discovery_lock);
 		return rc;
-
+	}
+	
+	fibril_mutex_unlock(&discovery_lock);
+	
 	return EOK;
 }
