Date: Fri, 18 Sep 2020 12:30:39 +0000 (UTC) From: Mark Johnston <markj@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r365878 - head/sys/amd64/amd64 Message-ID: <202009181230.08ICUdcl069107@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markj Date: Fri Sep 18 12:30:39 2020 New Revision: 365878 URL: https://svnweb.freebsd.org/changeset/base/365878 Log: Ensure that a protection key is selected in pmap_enter_largepage(). Reviewed by: alc, kib Reported by: Coverity MFC with: r365518 Differential Revision: https://reviews.freebsd.org/D26464 Modified: head/sys/amd64/amd64/pmap.c Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Fri Sep 18 12:30:15 2020 (r365877) +++ head/sys/amd64/amd64/pmap.c Fri Sep 18 12:30:39 2020 (r365878) @@ -6537,14 +6537,14 @@ restart: mp->ref_count++; } KASSERT((origpte & PG_V) == 0 || ((origpte & PG_PS) != 0 && - (origpte & PG_FRAME) == (newpte & PG_FRAME)), - ("va %#lx changing 1G phys page pdpe %#lx newpte %#lx", - va, origpte, newpte)); - if ((newpte & PG_W) != 0 && (origpte & PG_W) == 0) + (origpte & PG_FRAME) == (pten & PG_FRAME)), + ("va %#lx changing 1G phys page pdpe %#lx pten %#lx", + va, origpte, pten)); + if ((pten & PG_W) != 0 && (origpte & PG_W) == 0) pmap->pm_stats.wired_count += NBPDP / PAGE_SIZE; - else if ((newpte & PG_W) == 0 && (origpte & PG_W) != 0) + else if ((pten & PG_W) == 0 && (origpte & PG_W) != 0) pmap->pm_stats.wired_count -= NBPDP / PAGE_SIZE; - *pdpe = newpte; + *pdpe = pten; } else /* (psind == 1) */ { /* 2M */ if (!pmap_pkru_same(pmap, va, va + NBPDR)) return (KERN_PROTECTION_FAILURE); @@ -6573,14 +6573,14 @@ restart: mp->ref_count++; } KASSERT((origpte & PG_V) == 0 || ((origpte & PG_PS) != 0 && - (origpte & PG_FRAME) == (newpte & PG_FRAME)), - ("va %#lx changing 2M phys page pde %#lx newpte %#lx", - va, origpte, newpte)); - if ((newpte & PG_W) != 0 && (origpte & PG_W) == 0) + (origpte & PG_FRAME) == (pten & PG_FRAME)), + ("va %#lx changing 2M phys page pde %#lx pten %#lx", + va, origpte, pten)); + if ((pten & PG_W) != 0 && (origpte & PG_W) == 0) pmap->pm_stats.wired_count += NBPDR / PAGE_SIZE; - else if ((newpte & PG_W) == 0 && (origpte & PG_W) != 0) + else if ((pten & PG_W) == 0 && (origpte & PG_W) != 0) pmap->pm_stats.wired_count -= NBPDR / PAGE_SIZE; - *pde = newpte; + *pde = pten; } if ((origpte & PG_V) == 0) pmap_resident_count_inc(pmap, pagesizes[psind] / PAGE_SIZE);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202009181230.08ICUdcl069107>