Author: avos
Date: Sun Mar 26 17:59:51 2017
New Revision: 315992
URL: https://svnweb.freebsd.org/changeset/base/315992

Log:
  iwn: fix error handling for one well-known corner case.

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c   Sun Mar 26 17:46:42 2017        (r315991)
+++ head/sys/dev/iwn/if_iwn.c   Sun Mar 26 17:59:51 2017        (r315992)
@@ -4739,9 +4739,19 @@ iwn_tx_cmd(struct iwn_softc *sc, struct 
                error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m,
                    segs, &nsegs, BUS_DMA_NOWAIT);
                if (error != 0) {
+                       /* XXX fix this */
+                       /*
+                        * NB: Do not return error;
+                        * original mbuf does not exist anymore.
+                        */
                        device_printf(sc->sc_dev,
-                           "%s: can't map mbuf (error %d)\n", __func__, error);
-                       return error;
+                           "%s: can't map mbuf (error %d)\n",
+                           __func__, error);
+                       if_inc_counter(ni->ni_vap->iv_ifp,
+                           IFCOUNTER_OERRORS, 1);
+                       ieee80211_free_node(ni);
+                       m_freem(m);
+                       return 0;
                }
        }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to