Index: uspace/lib/libc/generic/vfs/vfs.c
===================================================================
--- uspace/lib/libc/generic/vfs/vfs.c	(revision 58d7280fbbd19031da736e5e9b0e3edd9f0f58df)
+++ uspace/lib/libc/generic/vfs/vfs.c	(revision c08c3551d7ebf1d63111a85064992ce95ac841a1)
@@ -194,4 +194,14 @@
 		return (int) rc;
 	}
+
+	/* Ask VFS whether it likes fs_name. */
+	rc = async_req_0_0(vfs_phone, IPC_M_PING);
+	if (rc != EOK) {
+		async_wait_for(req, NULL);
+		async_serialize_end();
+		futex_up(&vfs_phone_futex);
+		free(mpa);
+		return (int) rc;
+	}
 	
 	async_wait_for(req, &rc);
Index: uspace/srv/vfs/vfs_ops.c
===================================================================
--- uspace/srv/vfs/vfs_ops.c	(revision 58d7280fbbd19031da736e5e9b0e3edd9f0f58df)
+++ uspace/srv/vfs/vfs_ops.c	(revision c08c3551d7ebf1d63111a85064992ce95ac841a1)
@@ -321,5 +321,19 @@
 	}
 	fs_name[size] = '\0';
-	
+
+	/*
+	 * Wait for IPC_M_PING so that we can return an error if we don't know
+	 * fs_name.
+	 */
+	ipc_call_t data;
+	callid = async_get_call(&data);
+	if (IPC_GET_METHOD(data) != IPC_M_PING) {
+		ipc_answer_0(callid, ENOTSUP);
+		ipc_answer_0(rid, ENOTSUP);
+		free(mp);
+		free(fs_name);
+		return;
+	}
+
 	/*
 	 * Check if we know a file system with the same name as is in fs_name.
@@ -329,6 +343,8 @@
 	if (!fs_handle) {
 		if (flags & IPC_FLAG_BLOCKING) {
+			pending_req_t *pr;
+
 			/* Blocking mount, add to pending list */
-			pending_req_t *pr = (pending_req_t *) malloc(sizeof(pending_req_t));
+			pr = (pending_req_t *) malloc(sizeof(pending_req_t));
 			if (!pr) {
 				ipc_answer_0(callid, ENOMEM);
