Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/xen/gntdev/gntdev.c
Show First 20 Lines • Show All 272 Lines • ▼ Show 20 Lines | if (gref->page && gref->page->object == NULL) { | ||||
if (gref->gref_id != GRANT_REF_INVALID) { | if (gref->gref_id != GRANT_REF_INVALID) { | ||||
if (gnttab_query_foreign_access(gref->gref_id)) | if (gnttab_query_foreign_access(gref->gref_id)) | ||||
continue; | continue; | ||||
if (gnttab_end_foreign_access_ref(gref->gref_id) | if (gnttab_end_foreign_access_ref(gref->gref_id) | ||||
== 0) | == 0) | ||||
continue; | continue; | ||||
gnttab_free_grant_reference(gref->gref_id); | gnttab_free_grant_reference(gref->gref_id); | ||||
} | } | ||||
vm_page_unwire(gref->page, PQ_NONE); | vm_page_unwire_noq(gref->page); | ||||
vm_page_free(gref->page); | vm_page_free(gref->page); | ||||
gref->page = NULL; | gref->page = NULL; | ||||
} | } | ||||
if (gref->page == NULL) { | if (gref->page == NULL) { | ||||
if (gref_previous == NULL) | if (gref_previous == NULL) | ||||
STAILQ_REMOVE_HEAD(&tmp_grefs, gref_next.list); | STAILQ_REMOVE_HEAD(&tmp_grefs, gref_next.list); | ||||
else | else | ||||
STAILQ_REMOVE_AFTER(&tmp_grefs, gref_previous, | STAILQ_REMOVE_AFTER(&tmp_grefs, gref_previous, | ||||
▲ Show 20 Lines • Show All 1,004 Lines • Show Last 20 Lines |