fdesc_lookup(): no need to vhold the dvp vnode It is already referenced by the VOP_LOOKUP() caller, otherwise vdrop() after vn_lock() is invalid anyway.
fdescfs: allow vnode lock recursion This is needed in several situations for the root vnode at least. For instance, the check in fdesc_lookup() to avoid look up of the root vnode itself cannot detect other file descriptor referencing the root vnode.
fdesc_allocvp(): fix potential use after free Just owning the interlock is not enough for vget() to operate on the vnode race-free with vgone(), the vnode should be held. Use vget_prep()/vget_finish() to avoid vholding the vnode explicitly, and drop LK_INTERLOCK.
fdescfs: remove useless XXX comment, unwrap line