Module Name:    src
Committed By:   hannken
Date:           Sat Mar 19 13:51:01 UTC 2022

Modified Files:
        src/sys/dev/ata: ata_raid_adaptec.c ata_raid_intel.c ata_raid_jmicron.c
            ata_raid_nvidia.c ata_raid_promise.c ata_raid_subr.c ata_raid_via.c

Log Message:
Lock vnode across VOP_OPEN.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/dev/ata/ata_raid_adaptec.c
cvs rdiff -u -r1.10 -r1.11 src/sys/dev/ata/ata_raid_intel.c
cvs rdiff -u -r1.7 -r1.8 src/sys/dev/ata/ata_raid_jmicron.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/ata/ata_raid_nvidia.c
cvs rdiff -u -r1.13 -r1.14 src/sys/dev/ata/ata_raid_promise.c
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/ata/ata_raid_subr.c
cvs rdiff -u -r1.9 -r1.10 src/sys/dev/ata/ata_raid_via.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/dev/ata/ata_raid_adaptec.c
diff -u src/sys/dev/ata/ata_raid_adaptec.c:1.11 src/sys/dev/ata/ata_raid_adaptec.c:1.12
--- src/sys/dev/ata/ata_raid_adaptec.c:1.11	Mon Oct 22 19:38:06 2018
+++ src/sys/dev/ata/ata_raid_adaptec.c	Sat Mar 19 13:51:01 2022
@@ -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 <s...@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_s
 	if (error)
 		goto out;
 
+	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	error = VOP_OPEN(vp, FREAD, NOCRED);
 	if (error) {
 		vput(vp);

Index: src/sys/dev/ata/ata_raid_intel.c
diff -u src/sys/dev/ata/ata_raid_intel.c:1.10 src/sys/dev/ata/ata_raid_intel.c:1.11
--- src/sys/dev/ata/ata_raid_intel.c:1.10	Fri Oct  4 12:24:32 2019
+++ src/sys/dev/ata/ata_raid_intel.c	Sat Mar 19 13:51:01 2022
@@ -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 <s...@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_sof
 	if (error)
 		goto out;
 
+	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	error = VOP_OPEN(vp, FREAD, NOCRED);
 	if (error) {
 		vput(vp);

Index: src/sys/dev/ata/ata_raid_jmicron.c
diff -u src/sys/dev/ata/ata_raid_jmicron.c:1.7 src/sys/dev/ata/ata_raid_jmicron.c:1.8
--- src/sys/dev/ata/ata_raid_jmicron.c:1.7	Mon Oct 22 19:38:06 2018
+++ src/sys/dev/ata/ata_raid_jmicron.c	Sat Mar 19 13:51:01 2022
@@ -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 <s...@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_s
 	if (error)
 		goto out;
 
+	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	error = VOP_OPEN(vp, FREAD, NOCRED);
 	if (error) {
 		vput(vp);

Index: src/sys/dev/ata/ata_raid_nvidia.c
diff -u src/sys/dev/ata/ata_raid_nvidia.c:1.4 src/sys/dev/ata/ata_raid_nvidia.c:1.5
--- src/sys/dev/ata/ata_raid_nvidia.c:1.4	Mon Oct 22 19:38:06 2018
+++ src/sys/dev/ata/ata_raid_nvidia.c	Sat Mar 19 13:51:01 2022
@@ -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 <s...@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_so
 	if (error)
 		goto out;
 
+	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	error = VOP_OPEN(vp, FREAD, NOCRED);
 	if (error) {
 		vput(vp);

Index: src/sys/dev/ata/ata_raid_promise.c
diff -u src/sys/dev/ata/ata_raid_promise.c:1.13 src/sys/dev/ata/ata_raid_promise.c:1.14
--- src/sys/dev/ata/ata_raid_promise.c:1.13	Mon Oct 22 19:38:06 2018
+++ src/sys/dev/ata/ata_raid_promise.c	Sat Mar 19 13:51:01 2022
@@ -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 <s...@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_s
 	if (error)
 		goto out;
 
+	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	error = VOP_OPEN(vp, FREAD, NOCRED);
 	if (error) {
 		vput(vp);

Index: src/sys/dev/ata/ata_raid_subr.c
diff -u src/sys/dev/ata/ata_raid_subr.c:1.3 src/sys/dev/ata/ata_raid_subr.c:1.4
--- src/sys/dev/ata/ata_raid_subr.c:1.3	Sun Jun 25 12:29:32 2017
+++ src/sys/dev/ata/ata_raid_subr.c	Sat Mar 19 13:51:01 2022
@@ -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_
 		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;

Index: src/sys/dev/ata/ata_raid_via.c
diff -u src/sys/dev/ata/ata_raid_via.c:1.9 src/sys/dev/ata/ata_raid_via.c:1.10
--- src/sys/dev/ata/ata_raid_via.c:1.9	Mon Oct 22 19:38:06 2018
+++ src/sys/dev/ata/ata_raid_via.c	Sat Mar 19 13:51:01 2022
@@ -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 <s...@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
 	if (error)
 		goto out;
 
+	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	error = VOP_OPEN(vp, FREAD, NOCRED);
 	if (error) {
 		vput(vp);

Reply via email to