Index: sys/vm/vm_radix.c =================================================================== --- sys/vm/vm_radix.c (revision 228210) +++ sys/vm/vm_radix.c (working copy) @@ -344,7 +344,7 @@ vm_radix_insert(struct vm_radix *rtree, vm_pindex_ rnode->rn_child[slot], (u_long)index)); val = (void *)((uintptr_t)val | VM_RADIX_BLACK); rnode->rn_child[slot] = val; - atomic_add_int((volatile int *)&rnode->rn_count, 1); + rnode->rn_count++; CTR6(KTR_VM, "insert: tree %p, index %p, level %d, slot %d, rnode %p, count %u", rtree, (void *)index, level, slot, rnode, rnode->rn_count); @@ -678,15 +678,8 @@ vm_radix_remove(struct vm_radix *rtree, vm_pindex_ (rnode != NULL) ? rnode->rn_child[slot] : NULL, (rnode != NULL) ? rnode->rn_count : 0); rnode->rn_child[slot] = NULL; + rnode->rn_count--; /* - * Use atomics for the last level since red and black - * will both adjust it. - */ - if (level == 0) - atomic_add_int((volatile int *)&rnode->rn_count, -1); - else - rnode->rn_count--; - /* * Only allow black removes to prune the tree. */ if ((color & VM_RADIX_BLACK) == 0 || rnode->rn_count > 0)