Possible inconsistency in the use of in6_delmulti()

gnn at freebsd.org gnn at freebsd.org
Wed Jul 19 13:09:52 UTC 2006


At Tue, 18 Jul 2006 12:03:20 -0700,
Tom Parker wrote:
> 
> Hi,
> 
> New to the list here, but fairly familiar with the innards of (at
> least an older) version of the fbsd networking code. I'm fortunate in
> my ability to run purify on a simulated instance of our ported version
> of the networking code.  Purify has picked up a problem that I'm a bit
> mystified as how it can be fixed.  It is present in current versions
> also, I'm interested in any comments people have (I think ours is 4.4
> vintage, but it is hard to tell).
> 
> As far as I can tell, in most calling paths when in6_delmulti() is
> called, it is done after the in6_multi_mship structure has been
> removed from the im6o_memberships list in the relevant PCB.  This
> applies to in6_ifdetach(), in6_pcbpurgeif0, ip6_setmoptions()  etc.
> However in in6_purgeaddr() in6_delmulti is called straight off.  I'm
> not sure if we've violated some usage convention, but purify is
> telling me this causes access violations when we then leave the same
> group using setsockopt().  in6_purgeaddr is called when we remove the
> address from the interface.
> 
> This should be possible in a real kernel.  Add a multicast address to
> an interface, open a socket and listen to the address, then remove the
> address from the interface.
> 
> Am I missing something here or is this a nasty problem in both the
> kernel and our stack port?
> 

It sounds like a bug to me.  Can you file a PR?

Thanks,
George


More information about the freebsd-net mailing list