diff options
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/vm_page.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index a96b8ac..56abce4 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -755,7 +755,7 @@ vm_page_alloc(vm_object_t object, vm_pindex_t pindex, int req) { vm_page_t m = NULL; vm_pindex_t color; - int page_req, s; + int flags, page_req, s; page_req = req & VM_ALLOC_CLASS_MASK; @@ -844,12 +844,13 @@ loop: /* * Initialize structure. Only the PG_ZERO flag is inherited. */ + flags = PG_BUSY; if (m->flags & PG_ZERO) { vm_page_zero_count--; - m->flags = PG_ZERO | PG_BUSY; - } else { - m->flags = PG_BUSY; + if (req & VM_ALLOC_ZERO) + flags = PG_ZERO | PG_BUSY; } + m->flags = flags; if (req & VM_ALLOC_WIRED) { atomic_add_int(&cnt.v_wire_count, 1); m->wire_count = 1; |