[PATCH] erofs-utils: lib: handle unexpected EOF in erofs_io_xcopy()

Vansh Choudhary <[email protected]>
Newsgroups org.ozlabs.lists.linux-erofs
Message-ID <[email protected]>
Treat a zero-length read from erofs_io_read() as an I/O failure when
erofs_io_xcopy() still has data left to copy.

Without that, the copy loop makes no forward progress after an early
EOF and can spin indefinitely.

Signed-off-by: Vansh Choudhary <[email protected]>
---
 lib/io.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/io.c b/lib/io.c
index 0c5eb2c..80b7639 100644
--- a/lib/io.c
+++ b/lib/io.c
@@ -667,12 +667,12 @@ int erofs_io_xcopy(struct erofs_vfile *vout, off_t pos,
 		ret = erofs_io_read(vin, buf, ret);
 		if (ret < 0)
 			return ret;
-		if (ret > 0) {
-			ret = erofs_io_pwrite(vout, buf, pos, ret);
-			if (ret < 0)
-				return ret;
-			pos += ret;
-		}
+		if (!ret)
+			return -EIO;
+		ret = erofs_io_pwrite(vout, buf, pos, ret);
+		if (ret < 0)
+			return ret;
+		pos += ret;
 		len -= ret;
 	} while (len);
 	return 0;
-- 
2.43.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.