Index: uspace/srv/vfs/vfs_ops.c
===================================================================
--- uspace/srv/vfs/vfs_ops.c	(revision 6b8e5b74427c3a66a192963cdac8b0ddbc45e451)
+++ uspace/srv/vfs/vfs_ops.c	(revision 6f9ef87a061ec460c409040201269659188f06ff)
@@ -73,5 +73,5 @@
 };
 
-static void vfs_mount_internal(ipc_callid_t rid, service_id_t service_id,
+static int vfs_mount_internal(ipc_callid_t rid, service_id_t service_id,
     fs_handle_t fs_handle, char *mp, char *opts)
 {
@@ -96,5 +96,5 @@
 			fibril_rwlock_write_unlock(&namespace_rwlock);
 			async_answer_0(rid, EBUSY);
-			return;
+			return EBUSY;
 		}
 		
@@ -104,5 +104,5 @@
 			fibril_rwlock_write_unlock(&namespace_rwlock);
 			async_answer_0(rid, rc);
-			return;
+			return rc;
 		}
 		
@@ -111,5 +111,5 @@
 			fibril_rwlock_write_unlock(&namespace_rwlock);
 			async_answer_0(rid, ENOMEM);
-			return;
+			return ENOMEM;
 		}
 		
@@ -140,5 +140,5 @@
 				fibril_rwlock_write_unlock(&namespace_rwlock);
 				async_answer_0(rid, rc);
-				return;
+				return rc;
 			}
 			async_wait_for(msg, &rc);
@@ -147,5 +147,5 @@
 				fibril_rwlock_write_unlock(&namespace_rwlock);
 				async_answer_0(rid, rc);
-				return;
+				return rc;
 			}
 
@@ -171,5 +171,5 @@
 			fibril_rwlock_write_unlock(&namespace_rwlock);
 			async_answer_0(rid, rc);
-			return;
+			return rc;
 		} else {
 			/*
@@ -179,5 +179,5 @@
 			fibril_rwlock_write_unlock(&namespace_rwlock);
 			async_answer_0(rid, ENOENT);
-			return;
+			return ENOENT;
 		}
 	}
@@ -212,5 +212,5 @@
 		async_answer_0(rid, rc);
 		fibril_rwlock_write_unlock(&namespace_rwlock);
-		return;
+		return rc;
 	}
 	
@@ -227,5 +227,5 @@
 		fibril_rwlock_write_unlock(&namespace_rwlock);
 		async_answer_0(rid, rc);
-		return;
+		return rc;
 	}
 	
@@ -263,4 +263,5 @@
 	async_answer_0(rid, rc);
 	fibril_rwlock_write_unlock(&namespace_rwlock);
+	return rc;
 }
 
@@ -357,5 +358,16 @@
 	}
 	fibril_mutex_unlock(&fs_list_lock);
-	
+
+	/* Do the mount */
+	rc = vfs_mount_internal(rid, service_id, fs_handle, mp, opts);
+	if (rc != EOK) {
+		async_answer_0(callid, ENOTSUP);
+		async_answer_0(rid, ENOTSUP);
+		free(mp);
+		free(opts);
+		free(fs_name);
+		return;
+	}
+
 	/* Add the filesystem info to the list of mounted filesystems */
 	mtab_ent_t *mtab_ent = malloc(sizeof(mtab_ent_t));
@@ -381,7 +393,4 @@
 	mtab_size++;
 	fibril_mutex_unlock(&mtab_list_lock);
-
-	/* Do the mount */
-	vfs_mount_internal(rid, service_id, fs_handle, mp, opts);
 
 	free(mp);
