```
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
```