- panic("vn_open: ubc_info_init");
- if (UBCINFOEXISTS(vp) && !ubc_hold(vp))
- panic("vn_open: hold");
+ panic("vn_open: ubc_info_init");
+#endif /* DIAGNOSTIC */
+
+ if (UBCINFOEXISTS(vp) && !ubc_hold(vp)) {
+ error = ENOENT;
+ goto bad;
+ }
+
+ if (error = VOP_OPEN(vp, fmode, cred, p)) {
+ ubc_rele(vp);
+ goto bad;
+ }
+