diff options
| author | hannken <hannken@NetBSD.org> | 2022-03-19 13:50:02 +0000 |
|---|---|---|
| committer | hannken <hannken@NetBSD.org> | 2022-03-19 13:50:02 +0000 |
| commit | a2b7553d44cdc9d0304652685ef699abc945dea6 (patch) | |
| tree | 2035b5143b393eca534e3359d527bd2b41a9d816 /sys/dev | |
| parent | 9ee46da21935598b2d4d19497b17576b7114048f (diff) | |
Lock vnode across VOP_OPEN.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ata/ata_raid_adaptec.c | 5 | ||||
| -rw-r--r-- | sys/dev/ata/ata_raid_intel.c | 5 | ||||
| -rw-r--r-- | sys/dev/ata/ata_raid_jmicron.c | 5 | ||||
| -rw-r--r-- | sys/dev/ata/ata_raid_nvidia.c | 5 | ||||
| -rw-r--r-- | sys/dev/ata/ata_raid_promise.c | 5 | ||||
| -rw-r--r-- | sys/dev/ata/ata_raid_subr.c | 6 | ||||
| -rw-r--r-- | sys/dev/ata/ata_raid_via.c | 5 |
7 files changed, 21 insertions, 15 deletions
diff --git a/sys/dev/ata/ata_raid_adaptec.c b/sys/dev/ata/ata_raid_adaptec.c index 765ec8786e9..20ad03bcb7b 100644 --- a/sys/dev/ata/ata_raid_adaptec.c +++ b/sys/dev/ata/ata_raid_adaptec.c @@ -1,4 +1,4 @@ -/* $NetBSD: ata_raid_adaptec.c,v 1.11 2018/10/22 19:38:06 jdolecek Exp $ */ +/* $NetBSD: ata_raid_adaptec.c,v 1.12 2022/03/19 13:51:01 hannken Exp $ */ /*- * Copyright (c) 2000,2001,2002 Søren Schmidt <sos@FreeBSD.org> @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ata_raid_adaptec.c,v 1.11 2018/10/22 19:38:06 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ata_raid_adaptec.c,v 1.12 2022/03/19 13:51:01 hannken Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -86,6 +86,7 @@ ata_raid_read_config_adaptec(struct wd_softc *sc) if (error) goto out; + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(vp, FREAD, NOCRED); if (error) { vput(vp); diff --git a/sys/dev/ata/ata_raid_intel.c b/sys/dev/ata/ata_raid_intel.c index 8189a299e9e..790694b7b6c 100644 --- a/sys/dev/ata/ata_raid_intel.c +++ b/sys/dev/ata/ata_raid_intel.c @@ -1,4 +1,4 @@ -/* $NetBSD: ata_raid_intel.c,v 1.10 2019/10/04 12:24:32 mrg Exp $ */ +/* $NetBSD: ata_raid_intel.c,v 1.11 2022/03/19 13:51:01 hannken Exp $ */ /*- * Copyright (c) 2000-2008 Søren Schmidt <sos@FreeBSD.org> @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ata_raid_intel.c,v 1.10 2019/10/04 12:24:32 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ata_raid_intel.c,v 1.11 2022/03/19 13:51:01 hannken Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -158,6 +158,7 @@ ata_raid_read_config_intel(struct wd_softc *sc) if (error) goto out; + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(vp, FREAD, NOCRED); if (error) { vput(vp); diff --git a/sys/dev/ata/ata_raid_jmicron.c b/sys/dev/ata/ata_raid_jmicron.c index 4ba8ef138e5..d29633bff1f 100644 --- a/sys/dev/ata/ata_raid_jmicron.c +++ b/sys/dev/ata/ata_raid_jmicron.c @@ -1,4 +1,4 @@ -/* $NetBSD: ata_raid_jmicron.c,v 1.7 2018/10/22 19:38:06 jdolecek Exp $ */ +/* $NetBSD: ata_raid_jmicron.c,v 1.8 2022/03/19 13:51:01 hannken Exp $ */ /*- * Copyright (c) 2000-2008 Søren Schmidt <sos@FreeBSD.org> @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ata_raid_jmicron.c,v 1.7 2018/10/22 19:38:06 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ata_raid_jmicron.c,v 1.8 2022/03/19 13:51:01 hannken Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -139,6 +139,7 @@ ata_raid_read_config_jmicron(struct wd_softc *sc) if (error) goto out; + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(vp, FREAD, NOCRED); if (error) { vput(vp); diff --git a/sys/dev/ata/ata_raid_nvidia.c b/sys/dev/ata/ata_raid_nvidia.c index 63fbf276526..1a64a1c9064 100644 --- a/sys/dev/ata/ata_raid_nvidia.c +++ b/sys/dev/ata/ata_raid_nvidia.c @@ -1,4 +1,4 @@ -/* $NetBSD: ata_raid_nvidia.c,v 1.4 2018/10/22 19:38:06 jdolecek Exp $ */ +/* $NetBSD: ata_raid_nvidia.c,v 1.5 2022/03/19 13:51:01 hannken Exp $ */ /*- * Copyright (c) 2000 - 2008 Søren Schmidt <sos@FreeBSD.org> @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ata_raid_nvidia.c,v 1.4 2018/10/22 19:38:06 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ata_raid_nvidia.c,v 1.5 2022/03/19 13:51:01 hannken Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -145,6 +145,7 @@ ata_raid_read_config_nvidia(struct wd_softc *sc) if (error) goto out; + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(vp, FREAD, NOCRED); if (error) { vput(vp); diff --git a/sys/dev/ata/ata_raid_promise.c b/sys/dev/ata/ata_raid_promise.c index 0a0a587e73d..2a4a5a350f7 100644 --- a/sys/dev/ata/ata_raid_promise.c +++ b/sys/dev/ata/ata_raid_promise.c @@ -1,4 +1,4 @@ -/* $NetBSD: ata_raid_promise.c,v 1.13 2018/10/22 19:38:06 jdolecek Exp $ */ +/* $NetBSD: ata_raid_promise.c,v 1.14 2022/03/19 13:51:01 hannken Exp $ */ /*- * Copyright (c) 2000,2001,2002 Søren Schmidt <sos@FreeBSD.org> @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ata_raid_promise.c,v 1.13 2018/10/22 19:38:06 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ata_raid_promise.c,v 1.14 2022/03/19 13:51:01 hannken Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -86,6 +86,7 @@ ata_raid_read_config_promise(struct wd_softc *sc) if (error) goto out; + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(vp, FREAD, NOCRED); if (error) { vput(vp); diff --git a/sys/dev/ata/ata_raid_subr.c b/sys/dev/ata/ata_raid_subr.c index d0b06fef805..cb6789331a5 100644 --- a/sys/dev/ata/ata_raid_subr.c +++ b/sys/dev/ata/ata_raid_subr.c @@ -1,4 +1,4 @@ -/* $NetBSD: ata_raid_subr.c,v 1.3 2017/06/25 12:29:32 maxv Exp $ */ +/* $NetBSD: ata_raid_subr.c,v 1.4 2022/03/19 13:51:01 hannken Exp $ */ /*- * Copyright (c) 2008 Juan Romero Pardines. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ata_raid_subr.c,v 1.3 2017/06/25 12:29:32 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ata_raid_subr.c,v 1.4 2022/03/19 13:51:01 hannken Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -82,13 +82,13 @@ ata_raid_disk_vnode_find(struct ataraid_disk_info *adi) kmem_free(adv, sizeof(struct ataraid_disk_vnode)); return NULL; } + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(vp, FREAD|FWRITE, NOCRED); if (error) { vput(vp); kmem_free(adv, sizeof(struct ataraid_disk_vnode)); return NULL; } - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); VOP_UNLOCK(vp); adv->adv_adi = adi; diff --git a/sys/dev/ata/ata_raid_via.c b/sys/dev/ata/ata_raid_via.c index 0e84228d039..49955eb6f5f 100644 --- a/sys/dev/ata/ata_raid_via.c +++ b/sys/dev/ata/ata_raid_via.c @@ -1,4 +1,4 @@ -/* $NetBSD: ata_raid_via.c,v 1.9 2018/10/22 19:38:06 jdolecek Exp $ */ +/* $NetBSD: ata_raid_via.c,v 1.10 2022/03/19 13:51:01 hannken Exp $ */ /*- * Copyright (c) 2000,2001,2002 Søren Schmidt <sos@FreeBSD.org> @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ata_raid_via.c,v 1.9 2018/10/22 19:38:06 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ata_raid_via.c,v 1.10 2022/03/19 13:51:01 hannken Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -135,6 +135,7 @@ ata_raid_read_config_via(struct wd_softc *sc) if (error) goto out; + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(vp, FREAD, NOCRED); if (error) { vput(vp); |
