Module Name:    src
Committed By:   pgoyette
Date:           Thu Dec 10 05:29:41 UTC 2015

Modified Files:
        src/sys/dev/pci: ichsmb.c piixpm.c

Log Message:
Initialize the mutex before calling xxx_rescan().  Otherwise if we
load/attach an i2cbus at a later time (ie, load the iic module),
we'll end-up re-initializing the mutex.

(Caught with a LOCKDEBUG kernel)


To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 src/sys/dev/pci/ichsmb.c
cvs rdiff -u -r1.46 -r1.47 src/sys/dev/pci/piixpm.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/pci/ichsmb.c
diff -u src/sys/dev/pci/ichsmb.c:1.44 src/sys/dev/pci/ichsmb.c:1.45
--- src/sys/dev/pci/ichsmb.c:1.44	Tue Dec  1 10:08:03 2015
+++ src/sys/dev/pci/ichsmb.c	Thu Dec 10 05:29:41 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ichsmb.c,v 1.44 2015/12/01 10:08:03 msaitoh Exp $	*/
+/*	$NetBSD: ichsmb.c,v 1.45 2015/12/10 05:29:41 pgoyette Exp $	*/
 /*	$OpenBSD: ichiic.c,v 1.18 2007/05/03 09:36:26 dlg Exp $	*/
 
 /*
@@ -22,7 +22,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ichsmb.c,v 1.44 2015/12/01 10:08:03 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ichsmb.c,v 1.45 2015/12/10 05:29:41 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -188,6 +188,7 @@ ichsmb_attach(device_t parent, device_t 
 
 	sc->sc_i2c_device = NULL;
 	flags = 0;
+	mutex_init(&sc->sc_i2c_mutex, MUTEX_DEFAULT, IPL_NONE);
 	ichsmb_rescan(self, "i2cbus", &flags);
 
 out:	if (!pmf_device_register(self, NULL, NULL))
@@ -207,7 +208,6 @@ ichsmb_rescan(device_t self, const char 
 		return 0;
 
 	/* Attach I2C bus */
-	mutex_init(&sc->sc_i2c_mutex, MUTEX_DEFAULT, IPL_NONE);
 	sc->sc_i2c_tag.ic_cookie = sc;
 	sc->sc_i2c_tag.ic_acquire_bus = ichsmb_i2c_acquire_bus;
 	sc->sc_i2c_tag.ic_release_bus = ichsmb_i2c_release_bus;

Index: src/sys/dev/pci/piixpm.c
diff -u src/sys/dev/pci/piixpm.c:1.46 src/sys/dev/pci/piixpm.c:1.47
--- src/sys/dev/pci/piixpm.c:1.46	Sun May  3 22:51:11 2015
+++ src/sys/dev/pci/piixpm.c	Thu Dec 10 05:29:41 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: piixpm.c,v 1.46 2015/05/03 22:51:11 pgoyette Exp $ */
+/* $NetBSD: piixpm.c,v 1.47 2015/12/10 05:29:41 pgoyette Exp $ */
 /*	$OpenBSD: piixpm.c,v 1.20 2006/02/27 08:25:02 grange Exp $	*/
 
 /*
@@ -22,7 +22,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: piixpm.c,v 1.46 2015/05/03 22:51:11 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: piixpm.c,v 1.47 2015/12/10 05:29:41 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -257,6 +257,7 @@ attach_i2c:
 		sc->sc_i2c_device[i] = NULL;
 
 	flags = 0;
+	mutex_init(&sc->sc_i2c_mutex, MUTEX_DEFAULT, IPL_NONE);
 	piixpm_rescan(self, "i2cbus", &flags);
 }
 
@@ -271,7 +272,6 @@ piixpm_rescan(device_t self, const char 
 		return 0;
 
 	/* Attach I2C bus */
-	mutex_init(&sc->sc_i2c_mutex, MUTEX_DEFAULT, IPL_NONE);
 
 	for (i = 0; i < sc->sc_numbusses; i++) {
 		if (sc->sc_i2c_device[i])

Reply via email to