kern/138689: commit references a PR
dfilter service
dfilter at FreeBSD.ORG
Sat Sep 12 19:00:18 UTC 2009
The following reply was made to PR kern/138689; it has been noted by GNATS.
From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: kern/138689: commit references a PR
Date: Sat, 12 Sep 2009 18:55:27 +0000 (UTC)
Author: bms
Date: Sat Sep 12 18:55:15 2009
New Revision: 197129
URL: http://svn.freebsd.org/changeset/base/197129
Log:
Fix an API issue in leave processing for IPv4 multicast groups.
* Do not assume that the group lookup performed by imo_match_group()
is valid when ifp is NULL in this case.
* Instead, return EADDRNOTAVAIL if the ifp cannot be resolved for the
membership we are being asked to leave.
Caveat user:
* The way IPv4 multicast memberships are implemented in the inpcb layer
at the moment, has the side-effect that struct ip_moptions will
still hold the membership, under the old ifp, until ip_freemoptions()
is called for the parent inpcb.
* The underlying issue is: the inpcb layer does not get notification
of ifp being detached going away in a thread-safe manner.
This is non-trivial to fix.
But hey, at least the kernel should't panic when you unplug a card.
PR: 138689
Submitted by: Stef Walter
MFC after: 5 days
Modified:
head/sys/netinet/in_mcast.c
Modified: head/sys/netinet/in_mcast.c
==============================================================================
--- head/sys/netinet/in_mcast.c Sat Sep 12 18:24:31 2009 (r197128)
+++ head/sys/netinet/in_mcast.c Sat Sep 12 18:55:15 2009 (r197129)
@@ -2189,6 +2189,9 @@ inp_leave_group(struct inpcb *inp, struc
if (!IN_MULTICAST(ntohl(gsa->sin.sin_addr.s_addr)))
return (EINVAL);
+ if (ifp == NULL)
+ return (EADDRNOTAVAIL);
+
/*
* Find the membership in the membership array.
*/
_______________________________________________
svn-src-all at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
More information about the freebsd-net
mailing list