Index: uspace/srv/hid/input/generic/input.c
===================================================================
--- uspace/srv/hid/input/generic/input.c	(revision 8d7ec69d8e6ebbc57c70b70b6ed09ed1b8ceba0c)
+++ uspace/srv/hid/input/generic/input.c	(revision 60db8525f04f5e9caea3389ef78b705ef8a76368)
@@ -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;
 }
Index: uspace/srv/net/net/net.c
===================================================================
--- uspace/srv/net/net/net.c	(revision 8d7ec69d8e6ebbc57c70b70b6ed09ed1b8ceba0c)
+++ uspace/srv/net/net/net.c	(revision 60db8525f04f5e9caea3389ef78b705ef8a76368)
@@ -56,4 +56,5 @@
 #include <adt/measured_strings.h>
 #include <adt/module_map.h>
+#include <fibril_synch.h>
 #include <loc.h>
 #include <nic.h>
@@ -76,4 +77,6 @@
 DEVICE_MAP_IMPLEMENT(netifs, netif_t);
 LIST_INITIALIZE(netif_list);
+
+static FIBRIL_MUTEX_INITIALIZE(discovery_lock);
 
 /** Add the configured setting to the configuration map.
@@ -294,6 +297,4 @@
 	printf("%s: Initializing device '%s'\n", NAME, netif->name);
 	
-	link_initialize(&netif->netif_list);
-	
 	netif->sid = sid;
 	netif->sess = loc_service_connect(EXCHANGE_SERIALIZE, netif->sid,
@@ -535,4 +536,6 @@
 	int rc;
 
+	fibril_mutex_lock(&discovery_lock);
+
 	rc = loc_category_get_id(DEVICE_CATEGORY_NIC, &nic_cat, IPC_FLAG_BLOCKING);
 	if (rc != EOK) {
@@ -569,4 +572,5 @@
 
 	free(svcs);
+	fibril_mutex_unlock(&discovery_lock);
 	return EOK;
 }
