radix_array: Fix bound expansion when acquiring locks
radix_array: Fix bound expansion when acquiring locks

Previously, we computed the expanded bounds of a lock and recorded
these on the lock object so we could unlock the appropriate bounds
even if the shape of the tree changed between the lock and unlock
(which it was likely to do if the lock was for an insertion).
However, we didn't use these expanded bounds for actually acquiring
the lock.  For sequential execution, this didn't cause problems
because our lock-acquiring loop would arrive at the same bounds as
those we computed.  However, in concurrent execution, the shape of the
radix tree could change *between* computing the expanded bounds and
acquiring all of the locks, causing the loop to lock less than the
expanded bounds.  Then, when the lock was released, we would unlock
the expanded bounds, which would, at best, attempt to unlock slots
that weren't locked, and at worst overlap with some other core's
locked region and unlock things it had locked.

To fix this, we simply lock using the exact same expanded bounds we
later use in unlock.

aclements/sv6,aclements/sv6,bowlofstew/sv6,aclements/sv6,bowlofstew/sv6,aclements/sv6,bowlofstew/sv6,aclements/sv6,bowlofstew/sv6,bowlofstew/sv6