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