From: Trond Myklebust Date: Fri, 2 Jan 2026 23:55:08 +0000 (-0500) Subject: NFS/localio: Deal with page bases that are > PAGE_SIZE X-Git-Tag: v6.18.7~178 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d6ea0b7394a443fb6ddd1a3619ccc2f0781a900c;p=thirdparty%2Fkernel%2Fstable.git NFS/localio: Deal with page bases that are > PAGE_SIZE [ Upstream commit 60699ab7cbf0a4eb19929cce243002b39c67917d ] When resending requests, etc, the page base can quickly grow larger than the page size. Fixes: 091bdcfcece0 ("nfs/localio: refactor iocb and iov_iter_bvec initialization") Signed-off-by: Trond Myklebust Reviewed-by: Mike Snitzer Signed-off-by: Sasha Levin --- diff --git a/fs/nfs/localio.c b/fs/nfs/localio.c index ed2a7efaf8f20..f537bc3386bf2 100644 --- a/fs/nfs/localio.c +++ b/fs/nfs/localio.c @@ -461,6 +461,8 @@ nfs_local_iters_init(struct nfs_local_kiocb *iocb, int rw) v = 0; total = hdr->args.count; base = hdr->args.pgbase; + pagevec += base >> PAGE_SHIFT; + base &= ~PAGE_MASK; while (total && v < hdr->page_array.npages) { len = min_t(size_t, total, PAGE_SIZE - base); bvec_set_page(&iocb->bvec[v], *pagevec, len, base);