Clipping an entry means inserting a map entry immediately before or after one we've already found, so there's no need to use the general-purpose search of vm_map_entry_link. This change replaces that with an implementation that only modifies one or two map entries after finding the successor or predecessor of the node being clipped.
The previous implementations of clip_start and clip_end corrupted the vm_map by changing start or end values of tree entries and invalidating the invariant condition on the max_free field for the last map entry on the search path for the subsequent unsuccessful search as part of vm_map_link_entry. Since this change removes those invalidations, the SPLAY_{LEFT,RIGHT}_STEP test to avoid a needless max_free lookup, which was tweaked to avoid the bottom-of-path problem, can be un-tweaked.