Date: Fri, 13 Dec 2002 14:27:11 +1100 From: Tim Robbins <tjr@FreeBSD.org> To: Brian Fundakowski Feldman <green@FreeBSD.org> Cc: current@FreeBSD.org Subject: Re: fincore.c strikes again (panic bremfree: bp not locked) Message-ID: <20021213142711.A58197@dilbert.robbins.dropbear.id.au> In-Reply-To: <200212130020.gBD0KFWg000827@green.bikeshed.org>; from green@FreeBSD.org on Thu, Dec 12, 2002 at 07:20:15PM -0500 References: <200212130020.gBD0KFWg000827@green.bikeshed.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Here's a proposed patch for this problem: Index: src/sys/i386/i386/pmap.c =================================================================== RCS file: /x/freebsd/src/sys/i386/i386/pmap.c,v retrieving revision 1.376 diff -u -r1.376 pmap.c --- src/sys/i386/i386/pmap.c 3 Dec 2002 04:00:42 -0000 1.376 +++ src/sys/i386/i386/pmap.c 13 Dec 2002 02:54:44 -0000 @@ -3300,7 +3300,7 @@ { pt_entry_t *ptep, pte; vm_page_t m; - int val = 0; + int refd, val = 0; ptep = pmap_pte(pmap, addr); if (ptep == 0) { @@ -3337,9 +3337,17 @@ /* * Referenced by someone */ - else if ((m->flags & PG_REFERENCED) || pmap_ts_referenced(m)) { + else if (m->flags & PG_REFERENCED) { val |= MINCORE_REFERENCED_OTHER; vm_page_flag_set(m, PG_REFERENCED); + } else { + vm_page_lock_queues(); + refd = pmap_ts_referenced(m); + vm_page_unlock_queues(); + if (refd) { + val |= MINCORE_REFERENCED_OTHER; + vm_page_flag_set(m, PG_REFERENCED); + } } } return val; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021213142711.A58197>