Index: sys/kern/subr_vmem.c =================================================================== --- sys/kern/subr_vmem.c +++ sys/kern/subr_vmem.c @@ -466,6 +466,7 @@ bt_remseg(vmem_t *vm, bt_t *bt) { + MPASS(bt->bt_type != BT_TYPE_CURSOR); TAILQ_REMOVE(&vm->vm_seglist, bt, bt_seglist); bt_free(vm, bt); } @@ -830,7 +831,7 @@ static void vmem_destroy1(vmem_t *vm) { - bt_t *bt; + bt_t *bt, *nbt; /* * Drain per-cpu quantum caches. @@ -843,8 +844,11 @@ VMEM_LOCK(vm); MPASS(vm->vm_nbusytag == 0); - while ((bt = TAILQ_FIRST(&vm->vm_seglist)) != NULL) + TAILQ_FOREACH_SAFE(bt, &vm->vm_seglist, bt_seglist, nbt) { + if (bt->bt_type == BT_TYPE_CURSOR) + continue; bt_remseg(vm, bt); + } if (vm->vm_hashlist != NULL && vm->vm_hashlist != vm->vm_hash0) free(vm->vm_hashlist, M_VMEM);