When extracting the pages from a user iterator fails, netfs_extract_user_iter() will return 0, this situation will result in an abnormal and oversized return value for netfs_unbuffered_writer_locked() (for example, 9223372036854775807). Therefore, when the number of extracted pages is 0, set ret to 0 and jump to out. Reported-and-tested-by: syzbot+d2125fcb6aa8c4276fd2@xxxxxxxxxxxxxxxxxxxxxxxxx Signed-off-by: Lizhi Xu <lizhi.xu@xxxxxxxxxxxxx> --- fs/netfs/direct_write.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/netfs/direct_write.c b/fs/netfs/direct_write.c index 608ba6416919..d74761fb1876 100644 --- a/fs/netfs/direct_write.c +++ b/fs/netfs/direct_write.c @@ -69,7 +69,7 @@ static ssize_t netfs_unbuffered_write_iter_locked(struct kiocb *iocb, struct iov */ if (async || user_backed_iter(iter)) { n = netfs_extract_user_iter(iter, len, &wreq->iter, 0); - if (n < 0) { + if (n <= 0) { ret = n; goto out; } -- 2.43.0