Module Name: src
Committed By: ozaki-r
Date: Tue Oct 7 07:04:35 UTC 2014
Modified Files:
src/sys/dev/pci: if_wm.c
Log Message:
Don't call ifmedia_ioctl with holding locks
To generate a diff of this commit:
cvs rdiff -u -r1.301 -r1.302 src/sys/dev/pci/if_wm.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/if_wm.c
diff -u src/sys/dev/pci/if_wm.c:1.301 src/sys/dev/pci/if_wm.c:1.302
--- src/sys/dev/pci/if_wm.c:1.301 Mon Oct 6 07:52:50 2014
+++ src/sys/dev/pci/if_wm.c Tue Oct 7 07:04:35 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: if_wm.c,v 1.301 2014/10/06 07:52:50 msaitoh Exp $ */
+/* $NetBSD: if_wm.c,v 1.302 2014/10/07 07:04:35 ozaki-r Exp $ */
/*
* Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -81,7 +81,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.301 2014/10/06 07:52:50 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.302 2014/10/07 07:04:35 ozaki-r Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -2677,7 +2677,15 @@ wm_ioctl(struct ifnet *ifp, u_long cmd,
}
sc->sc_flowflags = ifr->ifr_media & IFM_ETH_FMASK;
}
+ WM_BOTH_UNLOCK(sc);
+#ifdef WM_MPSAFE
+ s = splnet();
+#endif
error = ifmedia_ioctl(ifp, ifr, &sc->sc_mii.mii_media, cmd);
+#ifdef WM_MPSAFE
+ splx(s);
+#endif
+ WM_BOTH_LOCK(sc);
break;
case SIOCINITIFADDR:
if (ifa->ifa_addr->sa_family == AF_LINK) {