kernel - RB_SCAN() requires a short-term spinlock
* RB_SCAN() links and unlinks an info structure. If called with a shared
lock the linking and unlinking operations requires a very short-term spin
lock to avoid clobbering each other.
* Note that RB_REMOVE() scans the inprog list but this function can only
be safely called with the RB tree held exclusively anyway, so there's
no need to spinlock the info list.
* Add kern/subr_rbtree.c glue functions for acquiring and releasing the
spinlock, so sys/tree.h only needs to include sys/spinlock.h and not
also sys/spinlock2.h
Reported-by: sephe