Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Jan 2025 18:37:53 GMT
From:      Jessica Clarke <jrtc27@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 4015ff43cbbe - main - vm: Fix overflow issues in vm_page_startup
Message-ID:  <202501311837.50VIbr5w019791@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jrtc27:

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

commit 4015ff43cbbe819316104258da6a79bef76e52c2
Author:     Jessica Clarke <jrtc27@FreeBSD.org>
AuthorDate: 2025-01-31 18:37:27 +0000
Commit:     Jessica Clarke <jrtc27@FreeBSD.org>
CommitDate: 2025-01-31 18:37:27 +0000

    vm: Fix overflow issues in vm_page_startup
    
    Firstly, pagecount is a u_long so we should ensure j is the same for the
    sake of 64-bit systems. Secondly, ptoa is just a macro, and does not
    cast its argument, so in order to handle PAE systems correctly we need
    to cast j to vm_paddr_t (the type of startp).
    
    Fixes:  0078df5f0258 ("vm_phys: reduce touching of page->pool fields")
---
 sys/vm/vm_page.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 961b32da6599..f0e3fc73fb34 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -836,9 +836,10 @@ vm_page_startup(vm_offset_t vaddr)
 			m = vm_phys_seg_paddr_to_vm_page(seg, startp);
 			vm_page_init_page(m, startp, segind, pool);
 			if (pool == VM_FREEPOOL_DEFAULT) {
-				for (int j = 1; j < pagecount; j++) {
+				for (u_long j = 1; j < pagecount; j++) {
 					vm_page_init_page(&m[j],
-					    startp + ptoa(j), segind, pool);
+					    startp + ptoa((vm_paddr_t)j),
+					    segind, pool);
 				}
 			}
 			vmd = VM_DOMAIN(seg->domain);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202501311837.50VIbr5w019791>