From 8137bf0efa4e72e6611f05dfc700da9cfc8c69a0 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Sat, 22 Nov 2025 22:39:27 +0200 Subject: [PATCH] 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 feac4c32a5f87434a17a804d8148cea78f81ebea) --- sys/vm/vm_object.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index aa8044c1066..ff164c03c5a 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -2088,7 +2088,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); @@ -2164,6 +2164,7 @@ wired: } vm_object_pip_wakeup(object); +remove_pager: vm_pager_freespace(object, start, (end == 0 ? object->size : end) - start); }