summaryrefslogtreecommitdiffstats
path: root/sys/net/bpf_zerocopy.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net/bpf_zerocopy.c')
-rw-r--r--sys/net/bpf_zerocopy.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/net/bpf_zerocopy.c b/sys/net/bpf_zerocopy.c
index a1dd923..5629093 100644
--- a/sys/net/bpf_zerocopy.c
+++ b/sys/net/bpf_zerocopy.c
@@ -112,11 +112,13 @@ static void
zbuf_page_free(vm_page_t pp)
{
+ vm_page_lock(pp);
vm_page_lock_queues();
vm_page_unwire(pp, 0);
if (pp->wire_count == 0 && pp->object == NULL)
vm_page_free(pp);
vm_page_unlock_queues();
+ vm_page_unlock(pp);
}
/*
@@ -168,10 +170,10 @@ zbuf_sfbuf_get(struct vm_map *map, vm_offset_t uaddr)
VM_PROT_WRITE);
if (pp == NULL)
return (NULL);
- vm_page_lock_queues();
+ vm_page_lock(pp);
vm_page_wire(pp);
vm_page_unhold(pp);
- vm_page_unlock_queues();
+ vm_page_unlock(pp);
sf = sf_buf_alloc(pp, SFB_NOWAIT);
if (sf == NULL) {
zbuf_page_free(pp);
OpenPOWER on IntegriCloud