Date: Sat, 6 Jan 1996 14:11:27 -0800 (PST) From: Poul-Henning Kamp <phk> To: aagero@aage.aage.priv.no, phk, freebsd-bugs Subject: Re: kern/901 Message-ID: <199601062211.OAA22075@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
Synopsis: vm_page_free frees wrong pages in vfs_bio.c State-Changed-From-To: open-feedback State-Changed-By: phk State-Changed-When: Sat Jan 6 13:54:21 PST 1996 State-Changed-Why: It actually looks like you're right, if ((caddr_t) pg - bp->b_data) is bigger than 0x7f000000 then trouble abounds. Could you try this patch instead ? Index: vfs_bio.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_bio.c,v retrieving revision 1.81 diff -u -r1.81 vfs_bio.c --- vfs_bio.c 1996/01/05 20:12:33 1.81 +++ vfs_bio.c 1996/01/06 21:58:17 @@ -1637,9 +1637,9 @@ vm_page_t p; vm_offset_t from = round_page(froma); vm_offset_t to = round_page(toa); + unsigned int index = ((caddr_t) from - bp->b_data) >> PAGE_SHIFT; - for (pg = from; pg < to; pg += PAGE_SIZE) { - int index = ((caddr_t) pg - bp->b_data) >> PAGE_SHIFT; + for (pg = from; pg < to; pg += PAGE_SIZE, index++) { p = bp->b_pages[index]; bp->b_pages[index] = 0; pmap_kremove(pg); Poul-Henning Kamp
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601062211.OAA22075>