On 19.03.2015 19:31, Alexandre Martins wrote: > Hi ! > > I found a leak of mbuf in the lagg driver : > > https://svnweb.freebsd.org/base/head/sys/net/if_lagg.c?view=annotate#l1672 > > -=-=-=-=-=-=-=-=-=-=- > m = (lp->lp_detaching == 0) ? lagg_proto_input(sc, lp, m) : NULL; > -=-=-=-=-=-=-=-=-=-=- > > If lp_detaching is non 0, the mbuf pointer is set to NULL without m_freem it. > > Can you look at this ?
Hi, what you thing about this patch? lp_detaching can be non zero in case of parent interface departure. So I don't see the reason to call ETHER_BPF_MTAP() in this case. -- WBR, Andrey V. Elsukov
Index: if_lagg.c
===================================================================
--- if_lagg.c (revision 280234)
+++ if_lagg.c (working copy)
@@ -1661,7 +1661,8 @@ lagg_input(struct ifnet *ifp, struct mbuf *m)
LAGG_RLOCK(sc, &tracker);
if ((scifp->if_drv_flags & IFF_DRV_RUNNING) == 0 ||
(lp->lp_flags & LAGG_PORT_DISABLED) ||
- sc->sc_proto == LAGG_PROTO_NONE) {
+ sc->sc_proto == LAGG_PROTO_NONE ||
+ lp->lp_detaching != 0) {
LAGG_RUNLOCK(sc, &tracker);
m_freem(m);
return (NULL);
@@ -1668,9 +1669,7 @@ lagg_input(struct ifnet *ifp, struct mbuf *m)
}
ETHER_BPF_MTAP(scifp, m);
-
- m = (lp->lp_detaching == 0) ? lagg_proto_input(sc, lp, m) : NULL;
-
+ m = lagg_proto_input(sc, lp, m);
if (m != NULL) {
if (scifp->if_flags & IFF_MONITOR) {
m_freem(m);
signature.asc
Description: OpenPGP digital signature
