committed, thanks!

On Sat, Aug 20, 2011 at 02:46:30AM -0300, Christiano F. Haesbaert wrote:
> Hi, vlan_start() was increasing packet counts before checking if the
> packet was successfully enqueued. I made a hunt for similar errors.
> 
> Index: net/if_mpe.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_mpe.c,v
> retrieving revision 1.25
> diff -d -u -p -w -r1.25 if_mpe.c
> --- net/if_mpe.c      28 Jan 2011 14:58:24 -0000      1.25
> +++ net/if_mpe.c      20 Aug 2011 04:06:29 -0000
> @@ -265,7 +265,7 @@ mpeoutput(struct ifnet *ifp, struct mbuf
>       if (error) {
>               /* mbuf is already freed */
>               splx(s);
> -             return (error);
> +             goto out;
>       }
>       if_start(ifp);
>       splx(s);
> Index: net/if_pppx.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_pppx.c,v
> retrieving revision 1.9
> diff -d -u -p -w -r1.9 if_pppx.c
> --- net/if_pppx.c     7 Jul 2011 20:42:56 -0000       1.9
> +++ net/if_pppx.c     20 Aug 2011 05:37:48 -0000
> @@ -1057,6 +1057,10 @@ pppx_if_output(struct ifnet *ifp, struct
>  
>       s = splnet();
>       IFQ_ENQUEUE(&ifp->if_snd, m, NULL, error);
> +     if (error) {
> +             splx(s);
> +             goto out;
> +     }
>       if_start(ifp);
>       splx(s);
>  
> Index: net/if_vlan.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_vlan.c,v
> retrieving revision 1.87
> diff -d -u -p -w -r1.87 if_vlan.c
> --- net/if_vlan.c     18 Feb 2011 17:06:45 -0000      1.87
> +++ net/if_vlan.c     20 Aug 2011 03:58:05 -0000
> @@ -251,15 +251,15 @@ vlan_start(struct ifnet *ifp)
>                * Send it, precisely as ether_output() would have.
>                * We are already running at splnet.
>                */
> -             p->if_obytes += m->m_pkthdr.len;
> -             if (m->m_flags & M_MCAST)
> -                     p->if_omcasts++;
>               IFQ_ENQUEUE(&p->if_snd, m, NULL, error);
>               if (error) {
>                       /* mbuf is already freed */
>                       ifp->if_oerrors++;
>                       continue;
>               }
> +             p->if_obytes += m->m_pkthdr.len;
> +             if (m->m_flags & M_MCAST)
> +                     p->if_omcasts++;
>  
>               ifp->if_opackets++;
>               if_start(p);

-- 

Reply via email to