Factoring out this code unfortunately introduced reference and lock leaks in
case of failure in the lock upgrade path under VV_CROSSLOCK. In terms of
practical use, this impacts unionfs (and nullfs in a corner case).
Also, add under INVARIANTS a check about the return value of vn_lock() (it is
not supposed to be anything else than ENOENT).
Fixes: 80bd5ef07025 vfs: factor out mount point traversal to a dedicated routine
MFC after: 3 days
MFC to: stable/14 releng/14.0
Sponsored by: The FreeBSD Foundation