I'm not sure this is the correct approach, but the attached patch should fix this issue.
Joe
diff --git a/sys/dev/disk/vn/vn.c b/sys/dev/disk/vn/vn.c
index 95bcf44..9f45281 100644
--- a/sys/dev/disk/vn/vn.c
+++ b/sys/dev/disk/vn/vn.c
@@ -697,7 +697,7 @@ vnsetcred(struct vn_softc *vn, struct ucred *cred)
* Set credits in our softc
*/
- if (vn->sc_cred)
+ if (vn->sc_cred && vn->sc_cred->cr_ref > 0)
crfree(vn->sc_cred);
vn->sc_cred = crdup(cred);
