Date: Tue, 07 Jan 2003 10:59:33 -0700 (MST) From: "M. Warner Losh" <imp@bsdimp.com> To: gallatin@cs.duke.edu Cc: tlambert2@mindspring.com, nate@root.org, current@FreeBSD.ORG, net@FreeBSD.ORG Subject: Re: Proper -current if_attach locking? Message-ID: <20030107.105933.19259527.imp@bsdimp.com> In-Reply-To: <15898.60467.681434.927797@grasshopper.cs.duke.edu> References: <20030107.021428.126452776.imp@bsdimp.com> <20030107.022617.23700606.imp@bsdimp.com> <15898.60467.681434.927797@grasshopper.cs.duke.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <15898.60467.681434.927797@grasshopper.cs.duke.edu> Andrew Gallatin <gallatin@cs.duke.edu> writes: : The IFNET_RLOCK() called in if_slowtimo() is a global lock for the : list of ifnet structs to ensure that no devices are removed or added : while something may be using it. There is one ifnet list in the system. So this means that only the locking in attach is bogus, and similar locking in detach is also bogus because they produce lock order reversals as the global lock is held to insert/remove if interfaces. : The lock in IF_PREPEND() (and more commonly used in drivers, : IF_DEQUE()) is per-ifq, to protect against multiple accesses : to a single ifq. There are many ifqs in the system. I knew I must have been missing something really fundamental last night. Warner To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030107.105933.19259527.imp>