Yes.

On Dec 17, 2008, at 6:49, Robert Watson <rwat...@freebsd.org> wrote:


On Wed, 17 Dec 2008, Kip Macy wrote:

Author: kmacy
Date: Wed Dec 17 04:33:52 2008
New Revision: 186209
URL: http://svn.freebsd.org/changeset/base/186209

Log:
avoid trying to acquire a shared lock while holding an exclusive lock
by making the ifnet lock acquisition exclusive

This seems unfortunate as the ifindex arrays get dereferenced a moderate amount; perhaps ifnet_byindex_locked() and ifaddr_byindex_locked() should be added for those special-case callers that are aware of ifnet locking?

Robert N M Watson
Computer Laboratory
University of Cambridge


Modified:
head/sys/net/if.c

Modified: head/sys/net/if.c
=== === === =====================================================================
--- head/sys/net/if.c    Wed Dec 17 04:15:38 2008    (r186208)
+++ head/sys/net/if.c    Wed Dec 17 04:33:52 2008    (r186209)
@@ -197,9 +197,9 @@ ifnet_byindex(u_short idx)
   INIT_VNET_NET(curvnet);
   struct ifnet *ifp;

-    IFNET_RLOCK();
+    IFNET_WLOCK();
   ifp = V_ifindex_table[idx].ife_ifnet;
-    IFNET_RUNLOCK();
+    IFNET_WUNLOCK();
   return (ifp);
}

@@ -218,9 +218,9 @@ ifaddr_byindex(u_short idx)
{
   struct ifaddr *ifa;

-    IFNET_RLOCK();
+    IFNET_WLOCK();
   ifa = ifnet_byindex(idx)->if_addr;
-    IFNET_RUNLOCK();
+    IFNET_WUNLOCK();
   return (ifa);
}


_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to