diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2025-11-22 20:39:27 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2026-01-26 15:26:21 +0000 |
| commit | 6e279feb40be04e3a4953dcce3b14b4c87bbab44 (patch) | |
| tree | 494d771dbca8b753800d22a044b4448fc9507e7f | |
| parent | 679b1a810e0e0d7fb4ea087a33af3b18408812b8 (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 10f12fbe67ae07b7e321c2def4ef93fb126695e0)
| -rw-r--r-- | sys/vm/vm_object.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 5b4517d2bf0c..413ba5459e3d 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1988,7 +1988,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); vm_page_iter_limit_init(&pages, object, end); again: @@ -2061,6 +2061,7 @@ wired: } vm_object_pip_wakeup(object); +remove_pager: vm_pager_freespace(object, start, (end == 0 ? object->size : end) - start); } |
