Module Name: src Committed By: riastradh Date: Mon Mar 28 12:35:26 UTC 2022
Modified Files: src/sys/miscfs/specfs: spec_vnops.c Log Message: specfs: Factor VOP_UNLOCK/vn_lock out of switch for clarity. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.192 -r1.193 src/sys/miscfs/specfs/spec_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/miscfs/specfs/spec_vnops.c diff -u src/sys/miscfs/specfs/spec_vnops.c:1.192 src/sys/miscfs/specfs/spec_vnops.c:1.193 --- src/sys/miscfs/specfs/spec_vnops.c:1.192 Mon Mar 28 12:35:17 2022 +++ src/sys/miscfs/specfs/spec_vnops.c Mon Mar 28 12:35:26 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: spec_vnops.c,v 1.192 2022/03/28 12:35:17 riastradh Exp $ */ +/* $NetBSD: spec_vnops.c,v 1.193 2022/03/28 12:35:26 riastradh Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: spec_vnops.c,v 1.192 2022/03/28 12:35:17 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: spec_vnops.c,v 1.193 2022/03/28 12:35:26 riastradh Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -632,9 +632,9 @@ spec_open(void *v) * calling .d_open, so release it now and reacquire it when * done. */ + VOP_UNLOCK(vp); switch (vp->v_type) { case VCHR: - VOP_UNLOCK(vp); do { const struct cdevsw *cdev; @@ -657,12 +657,9 @@ spec_open(void *v) /* Try to autoload device module */ (void) module_autoload(name, MODULE_CLASS_DRIVER); } while (gen != module_gen); - - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); break; case VBLK: - VOP_UNLOCK(vp); do { const struct bdevsw *bdev; @@ -685,13 +682,12 @@ spec_open(void *v) /* Try to autoload device module */ (void) module_autoload(name, MODULE_CLASS_DRIVER); } while (gen != module_gen); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); - break; default: __unreachable(); } + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); /* * If it has been revoked since we released the vnode lock and