Page MenuHomeFreeBSD

D11945.id31902.diff
No OneTemporary

D11945.id31902.diff

Index: sys/vm/vm_kern.c
===================================================================
--- sys/vm/vm_kern.c
+++ sys/vm/vm_kern.c
@@ -386,17 +386,19 @@
void
kmem_unback(vm_object_t object, vm_offset_t addr, vm_size_t size)
{
- vm_page_t m;
- vm_offset_t i, offset;
+ vm_page_t m, next;
+ vm_offset_t end, offset;
KASSERT(object == kmem_object || object == kernel_object,
("kmem_unback: only supports kernel objects."));
pmap_remove(kernel_pmap, addr, addr + size);
offset = addr - VM_MIN_KERNEL_ADDRESS;
+ end = offset + size;
VM_OBJECT_WLOCK(object);
- for (i = 0; i < size; i += PAGE_SIZE) {
- m = vm_page_lookup(object, atop(offset + i));
+ for (m = vm_page_lookup(object, atop(offset)); offset < end;
+ offset += PAGE_SIZE, m = next) {
+ next = vm_page_next(m);
vm_page_unwire(m, PQ_NONE);
vm_page_free(m);
}

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 17, 3:10 PM (6 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27695704
Default Alt Text
D11945.id31902.diff (852 B)

Event Timeline