diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index 88d5d1c7f987982e2c7324fe24052cd5b2ee6f26..4d726e9db2953a2315825040b724e3c5c27c0636 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -890,6 +890,8 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, const struct iovec *iov,
 	retval = generic_write_checks(file, &pos, &count, 0);
 	if (retval)
 		goto out;
+	if (!count)
+		goto out;	/* return 0 */
 
 	retval = -EINVAL;
 	if ((ssize_t) count < 0)