Indeed, I found this very same problem in internal testing, I took it out,
but then
have been working on the best way to keep the idea without the problems, I
have
code that will do that coming soon.

Thanks for the report!

Jack


On Mon, Nov 19, 2012 at 11:57 AM, Karim Fodil-Lemelin <
fodillemlinka...@gmail.com> wrote:

> Hello -net,
>
> While testing the latest igb driver in CURRENT I came across an issue with
> igb_mq_start(). More specifically this code:
>
> ...
>
>         struct mbuf *pm = NULL;
>         /*
>         ** Try to queue first to avoid
>         ** out-of-order delivery, but
>         ** settle for it if that fails
>         */
>         if (m && drbr_enqueue(ifp, txr->br, m))
>             pm = m;
>         err = igb_mq_start_locked(ifp, txr, pm);
>
> ...
>
>
> The problem comes from the fact that drbr_enqueue() can return an error
> and delete the mbuf as seen in drbr_enqueue():
>
> ...
> error = buf_ring_enqueue(br, m);
>     if (error)
>         m_freem(m);
> ...
>
> When this happens pm is set to m then igb_mq_start_locked() will enqueue
> an already freed mbuf with the outcome you can imagine.
>
> When I reverted only that part of r241037 that problem disappeared. I have
> attached a patch for those interested.
>
> Best regards,
>
> Karim.
>
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
>
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to