aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/xen
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2019-12-22 06:56:44 +0000
committerJeff Roberson <jeff@FreeBSD.org>2019-12-22 06:56:44 +0000
commit3cf3b4e6419d14ed25c0b67b84763b3be937c8b5 (patch)
tree2e580af663c9ad79e336380280fddd5e5ad0219b /sys/dev/xen
parentffac39deae0a2e50aa8d1197d15b8d0bb7e778fd (diff)
Notes
Diffstat (limited to 'sys/dev/xen')
-rw-r--r--sys/dev/xen/gntdev/gntdev.c13
-rw-r--r--sys/dev/xen/privcmd/privcmd.c14
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);
}