Index: uspace/srv/vfs/vfs_ops.c
===================================================================
--- uspace/srv/vfs/vfs_ops.c	(revision ebf10117424580f92c2b92688cbe21a16482113a)
+++ uspace/srv/vfs/vfs_ops.c	(revision c990ee69dc4e5007aa8d9fe493622ebd36134640)
@@ -186,9 +186,10 @@
 		return rc;
 	}
+
 	async_wait_for(msg, &rc);
-	vfs_exchange_release(exch);
-	
-	if (rc != EOK)
+	if (rc != EOK) {
+		vfs_exchange_release(exch);
 		return rc;
+	}
 	
 	vfs_lookup_res_t res;
@@ -202,6 +203,14 @@
 	/* Add reference to the mounted root. */
 	*root = vfs_node_get(&res); 
-	assert(*root);
+	if (!*root) {
+		aid_t msg = async_send_1(exch, VFS_OUT_UNMOUNTED,
+		    (sysarg_t) service_id, NULL);
+		async_forget(msg);
+		vfs_exchange_release(exch);
+		return ENOMEM;
+	}
 			
+	vfs_exchange_release(exch);
+
 	return EOK;
 }
@@ -541,4 +550,8 @@
 		vfs_node_put(base);
 		base = vfs_node_get(&base_lr);
+		if (!base) {
+			fibril_rwlock_write_unlock(&namespace_rwlock);
+			return ENOMEM;
+		}
 		old[shared] = '/';
 		old += shared;
@@ -904,5 +917,4 @@
 	int rc = vfs_lookup_internal(parent->node, path,
 	    walk_lookup_flags(flags), &lr);
-
 	if (rc != EOK) {
 		fibril_rwlock_read_unlock(&namespace_rwlock);
@@ -912,4 +924,9 @@
 	
 	vfs_node_t *node = vfs_node_get(&lr);
+	if (!node) {
+		fibril_rwlock_read_unlock(&namespace_rwlock);
+		vfs_file_put(parent);
+		return ENOMEM;
+	}
 	
 	vfs_file_t *file;
