]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
svcrdma: use rc_pageoff for memcpy byte offset
authorJoshua Rogers <linux@joshua.hu>
Fri, 7 Nov 2025 15:09:47 +0000 (10:09 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 8 Dec 2025 15:51:26 +0000 (10:51 -0500)
svc_rdma_copy_inline_range added rc_curpage (page index) to the page
base instead of the byte offset rc_pageoff. Use rc_pageoff so copies
land within the current page.

Found by ZeroPath (https://zeropath.com)

Fixes: 8e122582680c ("svcrdma: Move svc_rdma_read_info::ri_pageno to struct svc_rdma_recv_ctxt")
Cc: stable@vger.kernel.org
Signed-off-by: Joshua Rogers <linux@joshua.hu>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
net/sunrpc/xprtrdma/svc_rdma_rw.c

index 661b3fe2779f0c0e5a2c751c1fb552532d5aec78..945fbb374331cc89722d9e30ea0fb4f72f94fa7e 100644 (file)
@@ -848,7 +848,7 @@ static int svc_rdma_copy_inline_range(struct svc_rqst *rqstp,
                        head->rc_page_count++;
 
                dst = page_address(rqstp->rq_pages[head->rc_curpage]);
-               memcpy(dst + head->rc_curpage, src + offset, page_len);
+               memcpy((unsigned char *)dst + head->rc_pageoff, src + offset, page_len);
 
                head->rc_readbytes += page_len;
                head->rc_pageoff += page_len;