aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2025-11-22 20:39:27 +0000
committerMark Johnston <markj@FreeBSD.org>2026-01-26 15:37:47 +0000
commit4967e14ba25b368ad3f289b9a25e3a921f2661e3 (patch)
tree3b59975dd2499705cbc117529d3c8425c33d712a
parenteb5a6f5f9f74d3aa3deed0ec4c30ebc2a30e92b7 (diff)
vm_object_page_remove(): clear pager even if there is no resident pages
Approved by: so Security: FreeBSD-EN-26:03.vm (cherry picked from commit 72a447d0bc768c7fe8a9c972f710c75afebd581b) (cherry picked from commit 1dc8b622b36dc1d01e564825a079dfc7d231a4db)
-rw-r--r--sys/vm/vm_object.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index 8ae9fe50833d..ff7e661d57da 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -2123,7 +2123,7 @@ vm_object_page_remove(vm_object_t object, vm_pindex_t start, vm_pindex_t end,
(options & (OBJPR_CLEANONLY | OBJPR_NOTMAPPED)) == OBJPR_NOTMAPPED,
("vm_object_page_remove: illegal options for object %p", object));
if (object->resident_page_count == 0)
- return;
+ goto remove_pager;
vm_object_pip_add(object, 1);
again:
p = vm_page_find_least(object, start);
@@ -2199,6 +2199,7 @@ wired:
}
vm_object_pip_wakeup(object);
+remove_pager:
vm_pager_freespace(object, start, (end == 0 ? object->size : end) -
start);
}