Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Oct 2004 10:58:07 -0700
From:      John-Mark Gurney <gurney_j@resnet.uoregon.edu>
To:        Andre Oppermann <andre@freebsd.org>
Cc:        cvs-src@freebsd.org
Subject:   Re: cvs commit: src/sys/sys protosw.h src/sys/kern uipc_domain.cuipc_socket2.c
Message-ID:  <20041019175807.GM22681@funkthat.com>
In-Reply-To: <41753522.1E39FEAE@freebsd.org>
References:  <200410191513.i9JFDUbf072176@repoman.freebsd.org> <417532A2.9000901@errno.com> <41753522.1E39FEAE@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Andre Oppermann wrote this message on Tue, Oct 19, 2004 at 17:39 +0200:
> > >   Modified files:
> > >     sys/sys              protosw.h
> > >     sys/kern             uipc_domain.c uipc_socket2.c
> > >   Log:
> > >   Support for dynamically loadable and unloadable protocols within existing protocol
> > >   families.
> > >
> > 
> > I don't recall seeing this posted anywhere for comment.  I have some
> > concerns about this general topic and this code seems incomplete (e.g. I
> > see no locking).
> 
> Locking is not needed because there are no dead moments in transitioning
> from unregistered to registered and back.  All calls to any of the protocol
> specific functions will return a valid result (even if it is only EOPNOTSUPP).
> There is no list manipulation going on.
> 
> The caller of the function is required to assure that no dangeling sockets,
> references or memory allocations are left behind after unregistering.  It's
> simply impossible to solve otherwise.  For IPDIVERT which I have converted
> this works very well (it will simply refuse to unload if a divert socket is
> open).
> 
> What remaining concerns do you have?

I don't see any GIANT_REQUIRE, or locking around adding a new protocol..
This means there could be a race where two modules loading a protocol
get assigned the same slot...

I had to do this with the kqueue subsystem when dynamicly loading
filters..

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041019175807.GM22681>