Skip to content

Commit 6ada4e8

Browse files
committed
swap-like pagers: assert that writemapping decrease does not pass zero
Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D45119
1 parent 58d7ac1 commit 6ada4e8

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

sys/fs/tmpfs/tmpfs_subr.c

+3
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,9 @@ tmpfs_pager_release_writecount(vm_object_t object, vm_offset_t start,
183183
KASSERT((object->flags & OBJ_ANON) == 0,
184184
("%s: object %p with OBJ_ANON", __func__, object));
185185
old = object->un_pager.swp.writemappings;
186+
KASSERT(old >= (vm_ooffset_t)end - start,
187+
("tmpfs obj %p writecount %jx dec %jx", object, (uintmax_t)old,
188+
(uintmax_t)((vm_ooffset_t)end - start)));
186189
object->un_pager.swp.writemappings -= (vm_ooffset_t)end - start;
187190
new = object->un_pager.swp.writemappings;
188191
tmpfs_pager_writecount_recalc(object, old, new);

sys/vm/swap_pager.c

+4
Original file line numberDiff line numberDiff line change
@@ -3158,6 +3158,10 @@ swap_pager_release_writecount(vm_object_t object, vm_offset_t start,
31583158
VM_OBJECT_WLOCK(object);
31593159
KASSERT((object->flags & OBJ_ANON) == 0,
31603160
("Splittable object with writecount"));
3161+
KASSERT(object->un_pager.swp.writemappings >= (vm_ooffset_t)end - start,
3162+
("swap obj %p writecount %jx dec %jx", object,
3163+
(uintmax_t)object->un_pager.swp.writemappings,
3164+
(uintmax_t)((vm_ooffset_t)end - start)));
31613165
object->un_pager.swp.writemappings -= (vm_ooffset_t)end - start;
31623166
VM_OBJECT_WUNLOCK(object);
31633167
}

0 commit comments

Comments
 (0)