diff options
| author | Jeff Roberson <jeff@FreeBSD.org> | 2019-12-22 06:56:44 +0000 |
|---|---|---|
| committer | Jeff Roberson <jeff@FreeBSD.org> | 2019-12-22 06:56:44 +0000 |
| commit | 3cf3b4e6419d14ed25c0b67b84763b3be937c8b5 (patch) | |
| tree | 2e580af663c9ad79e336380280fddd5e5ad0219b /sys/dev/xen | |
| parent | ffac39deae0a2e50aa8d1197d15b8d0bb7e778fd (diff) | |
Notes
Diffstat (limited to 'sys/dev/xen')
| -rw-r--r-- | sys/dev/xen/gntdev/gntdev.c | 13 | ||||
| -rw-r--r-- | sys/dev/xen/privcmd/privcmd.c | 14 |
2 files changed, 11 insertions, 16 deletions
diff --git a/sys/dev/xen/gntdev/gntdev.c b/sys/dev/xen/gntdev/gntdev.c index eb5275771a808..d2f3d979f8d57 100644 --- a/sys/dev/xen/gntdev/gntdev.c +++ b/sys/dev/xen/gntdev/gntdev.c @@ -806,7 +806,7 @@ gntdev_gmap_pg_fault(vm_object_t object, vm_ooffset_t offset, int prot, { struct gntdev_gmap *gmap = object->handle; vm_pindex_t pidx, ridx; - vm_page_t page, oldm; + vm_page_t page; vm_ooffset_t relative_offset; if (gmap->map == NULL) @@ -829,15 +829,12 @@ gntdev_gmap_pg_fault(vm_object_t object, vm_ooffset_t offset, int prot, KASSERT(vm_page_wired(page), ("page %p is not wired", page)); KASSERT(!vm_page_busied(page), ("page %p is busy", page)); - if (*mres != NULL) { - oldm = *mres; - vm_page_free(oldm); - *mres = NULL; - } - vm_page_busy_acquire(page, 0); vm_page_valid(page); - vm_page_insert(page, object, pidx); + if (*mres != NULL) + vm_page_replace(page, object, pidx, *mres); + else + vm_page_insert(page, object, pidx); *mres = page; return (VM_PAGER_OK); } diff --git a/sys/dev/xen/privcmd/privcmd.c b/sys/dev/xen/privcmd/privcmd.c index 75e87df9dc577..04dc9e8830714 100644 --- a/sys/dev/xen/privcmd/privcmd.c +++ b/sys/dev/xen/privcmd/privcmd.c @@ -154,7 +154,7 @@ privcmd_pg_fault(vm_object_t object, vm_ooffset_t offset, { struct privcmd_map *map = object->handle; vm_pindex_t pidx; - vm_page_t page, oldm; + vm_page_t page; if (map->mapped != true) return (VM_PAGER_FAIL); @@ -172,15 +172,13 @@ privcmd_pg_fault(vm_object_t object, vm_ooffset_t offset, KASSERT(vm_page_wired(page), ("page %p not wired", page)); KASSERT(!vm_page_busied(page), ("page %p is busy", page)); - if (*mres != NULL) { - oldm = *mres; - vm_page_free(oldm); - *mres = NULL; - } - vm_page_busy_acquire(page, 0); vm_page_valid(page); - vm_page_insert(page, object, pidx); + + if (*mres != NULL) + vm_page_replace(page, object, pidx, *mres); + else + vm_page_insert(page, object, pidx); *mres = page; return (VM_PAGER_OK); } |
