diff --git a/mm/filemap.c b/mm/filemap.c
index e006c57bda5431325b511e25996b3f910d7b4b8a..adbac104f34c80fdee280438058c2c6b0a8fe857 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1219,6 +1219,8 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
 				retval = retval ?: desc.error;
 				break;
 			}
+			if (desc.count > 0)
+				break;
 		}
 	}
 out: