diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index 6c3f8fb2232..80f2dbab3fa 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -280,7 +280,6 @@ devfs_allocv(struct devfs_dirent *de, struct mount *mp, struct vnode **vpp, stru sx_xunlock(&dmp->dm_lock); return (ENOENT); } - loop: DEVFS_DE_HOLD(de); DEVFS_DMP_HOLD(dmp); mtx_lock(&devfs_de_interlock); @@ -296,8 +295,10 @@ devfs_allocv(struct devfs_dirent *de, struct mount *mp, struct vnode **vpp, stru vput(vp); return (ENOENT); } - else if (error) - goto loop; + else if (error) { + sx_xunlock(&dmp->dm_lock); + return (error); + } sx_xunlock(&dmp->dm_lock); *vpp = vp; return (0);