Date: Thu, 14 Mar 2002 16:11:33 -0500 From: Jake Burkholder <jake@locore.ca> To: "Andrew R. Reiter" <arr@FreeBSD.org> Cc: freebsd-smp@FreeBSD.org Subject: Re: Patch to lock down modules Message-ID: <20020314161133.E52298@locore.ca> In-Reply-To: <Pine.NEB.3.96L.1020314145829.97600F-100000@fledge.watson.org>; from arr@FreeBSD.org on Thu, Mar 14, 2002 at 03:01:16PM -0500 References: <20020314134359.C52298@locore.ca> <Pine.NEB.3.96L.1020314145829.97600F-100000@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Apparently, On Thu, Mar 14, 2002 at 03:01:16PM -0500, Andrew R. Reiter said words to the effect of; > On Thu, 14 Mar 2002, Jake Burkholder wrote: > > :> :Can you explain the wierd logic that was added to linker_file_unload? > :> > :> Ugh, yes, this is kinda ugly. Essentially this is a result of hacking > :> this back and forth between where we should be holding SLOCK over. This > :> is exactly what I wanted to discuss this b/c prior to making this change, > :> I had a much more simple strategy here (but was dropped due to changes to > :> a better strategy for kern_module). We discussed before about possibly > :> having two sets of lookup functions -- internal and external -- perhaps > :> this is a better solution? > : > :Hmm, I'll have to look at it more closely. > : > :> > :> :Thanks, > :> :Jake > > I uploaded a new patch (tested somewhat) to: > http://people.freebsd.org/~arr/modlock.diff > > this takes care of 2 of the 3 issues you brought up -- but, I'd enjoy > inspection of the atomic set and addcalls I used. Sorry, I should have been clearer. module_lookupbyname should assert that the lock is locked either shared or exclusive, sx_assert(SX_LOCKED) does this, so it can be called with either. Don't bother with the shared lock - upgrade - release exclusive, or with the atomic ops, just get an exclusive lock over the whole thing. like: MOD_XLOCK; mp = module_lookupbyname(newmod->name); if (mp != NULL) { MOD_XUNLOCK; ... return (EEXIST); } newmod->id = nextid++; TAILQ_INSERT_TAIL(&modules, newmod, link); ... MOD_XUNLOCK; return (0); > > I'll relook at the 3rd issue (ugliness in kern_linker) and see what I can > figure out if I don't hear from you. Ok. Jake To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020314161133.E52298>