The branch main has been updated by markj:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=ac2b54441742b3148de72e3b29aa0f00d29bb825

commit ac2b54441742b3148de72e3b29aa0f00d29bb825
Author:     Mark Johnston <ma...@freebsd.org>
AuthorDate: 2021-11-10 21:57:12 +0000
Commit:     Mark Johnston <ma...@freebsd.org>
CommitDate: 2021-11-10 21:57:12 +0000

    mbuf: Fix an offset calculation in m_apply_extpg_one()
    
    We were not including the requested starting offset in the page offset.
    
    Reviewed by:    jhb
    Fixes:          3c7a01d773ac ("Extend m_apply() to support unmapped mbufs.")
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D32922
---
 sys/kern/uipc_mbuf.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c
index 0196023bc601..e0cb45a8d384 100644
--- a/sys/kern/uipc_mbuf.c
+++ b/sys/kern/uipc_mbuf.c
@@ -1301,7 +1301,7 @@ m_apply_extpg_one(struct mbuf *m, int off, int len,
                pglen = m_epg_pagelen(m, i, pgoff);
                if (off < pglen) {
                        count = min(pglen - off, len);
-                       p = (void *)PHYS_TO_DMAP(m->m_epg_pa[i] + pgoff);
+                       p = (void *)PHYS_TO_DMAP(m->m_epg_pa[i] + pgoff + off);
                        rval = f(arg, p, count);
                        if (rval)
                                return (rval);

Reply via email to