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