The race is:
CPU1 CPU2
devfs_reclaim_vchr
make v_usecount 0
VI_LOCK
sees v_usecount == 0, no updates
vp->v_rdev = NULL;
...
VI_UNLOCK
VI_LOCK
v_decr_devcount
sees v_rdev == NULL, no updatesIn this scenario si_devcount decrement is not performed.
Note this can only happen if the vnode lock is not held.
Also see the 3/3 review.