Apply by doing: cd /usr/src patch -p0 < 003_vnode.patch Then build and install a new kernel. Index: sys/kern/spec_vnops.c =================================================================== RCS file: /vol/openbsd/cvs/src/sys/kern/spec_vnops.c,v retrieving revision 1.74 diff -u -p -r1.74 spec_vnops.c --- sys/kern/spec_vnops.c 9 Jul 2013 15:37:43 -0000 1.74 +++ sys/kern/spec_vnops.c 8 Nov 2013 14:35:18 -0000 @@ -472,10 +472,11 @@ int spec_close(void *v) { struct vop_close_args *ap = v; + struct proc *p = ap->a_p; struct vnode *vp = ap->a_vp; dev_t dev = vp->v_rdev; int (*devclose)(dev_t, int, int, struct proc *); - int mode, error; + int mode, relock, error; switch (vp->v_type) { @@ -541,7 +542,14 @@ spec_close(void *v) panic("spec_close: not special"); } - return ((*devclose)(dev, ap->a_fflag, mode, ap->a_p)); + /* release lock if held and this isn't coming from vclean() */ + relock = VOP_ISLOCKED(vp) && !(vp->v_flag & VXLOCK); + if (relock) + VOP_UNLOCK(vp, 0, p); + error = (*devclose)(dev, ap->a_fflag, mode, p); + if (relock) + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p); + return (error); } int