Index: uspace/lib/posix/source/stdio.c
===================================================================
--- uspace/lib/posix/source/stdio.c	(revision 163fc0963aff02c35c25572b75d24681834e9f1c)
+++ uspace/lib/posix/source/stdio.c	(revision d4067a792b7c6d4786058f0ae59ea029852a9a9d)
@@ -344,7 +344,7 @@
 {
 	const int fildes = *(int *) fd;
-	ssize_t wr = write(fildes, &posix_pos[fildes], str, size);
+	ssize_t wr = vfs_write(fildes, &posix_pos[fildes], str, size);
 	if (wr < 0)
-		return errno;
+		return wr;
 	return str_nlength(str, wr);
 }
@@ -372,5 +372,5 @@
 		
 		const int fildes = *(int *) fd;
-		if (write(fildes, &posix_pos[fildes], buf, sz) != (ssize_t) sz)
+		if (vfs_write(fildes, &posix_pos[fildes], buf, sz) < 0)
 			break;
 		
Index: uspace/lib/posix/source/unistd.c
===================================================================
--- uspace/lib/posix/source/unistd.c	(revision 163fc0963aff02c35c25572b75d24681834e9f1c)
+++ uspace/lib/posix/source/unistd.c	(revision d4067a792b7c6d4786058f0ae59ea029852a9a9d)
@@ -196,5 +196,8 @@
 ssize_t posix_read(int fildes, void *buf, size_t nbyte)
 {
-	return negerrno(read, fildes, &posix_pos[fildes], buf, nbyte);
+	ssize_t size = rcerrno(vfs_read, fildes, &posix_pos[fildes], buf, nbyte);
+	if (size < 0)
+		return -1;
+	return size;
 }
 
@@ -209,5 +212,8 @@
 ssize_t posix_write(int fildes, const void *buf, size_t nbyte)
 {
-	return negerrno(write, fildes, &posix_pos[fildes], buf, nbyte);
+	ssize_t size = rcerrno(vfs_write, fildes, &posix_pos[fildes], buf, nbyte);
+	if (size < 0)
+		return -1;
+	return size;
 }
 
