diff options
| author | hannken <hannken@NetBSD.org> | 2019-02-20 10:02:51 +0000 |
|---|---|---|
| committer | hannken <hannken@NetBSD.org> | 2019-02-20 10:02:51 +0000 |
| commit | 234ee9d38596b4e7cdcfc0f92fd3a457897df4d7 (patch) | |
| tree | d548a118b11520fc9889843980b32ec837f45382 /sys | |
| parent | 30d0dc6fad41e8564362770b7bef220ac4c1acb6 (diff) | |
Fix vnode locking for opendisk(), must lock for VOP_OPEN().
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/kern/subr_disk_open.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/subr_disk_open.c b/sys/kern/subr_disk_open.c index 336a84241e3..106112de9a4 100644 --- a/sys/kern/subr_disk_open.c +++ b/sys/kern/subr_disk_open.c @@ -1,4 +1,4 @@ -/* $NetBSD: subr_disk_open.c,v 1.13 2015/12/08 20:36:15 christos Exp $ */ +/* $NetBSD: subr_disk_open.c,v 1.14 2019/02/20 10:02:51 hannken Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: subr_disk_open.c,v 1.13 2015/12/08 20:36:15 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_disk_open.c,v 1.14 2019/02/20 10:02:51 hannken Exp $"); #include <sys/param.h> #include <sys/conf.h> @@ -65,6 +65,7 @@ opendisk(device_t dv) if (bdevvp(dev, &tmpvn)) panic("%s: can't alloc vnode for %s", __func__, device_xname(dv)); + vn_lock(tmpvn, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(tmpvn, FREAD | FSILENT, NOCRED); if (error) { /* |
