Hi,
I put here a bug among others:

------------------------- sys/dev/ic/aic6915.c -------------------------

386             MGETHDR(m, M_DONTWAIT, MT_DATA);
                if (m == NULL) {
                        printf("%s: unable to allocate Tx mbuf\n",
                            sc->sc_dev.dv_xname);
                        break;
                }
                if (m0->m_pkthdr.len > MHLEN) {
                        MCLGET(m, M_DONTWAIT);
                        if ((m->m_flags & M_EXT) == 0) {
                                printf("%s: unable to allocate Tx "
                                    "cluster\n", sc->sc_dev.dv_xname);
                                m_freem(m);
                                break;
                        }
                }
                m_copydata(m0, 0, m0->m_pkthdr.len, mtod(m, caddr_t));
                m->m_pkthdr.len = m->m_len = m0->m_pkthdr.len;
                error = bus_dmamap_load_mbuf(sc->sc_dmat, dmamap,
                    m, BUS_DMA_WRITE|BUS_DMA_NOWAIT);
                if (error) {
                        printf("%s: unable to load Tx buffer, "
                            "error = %d\n", sc->sc_dev.dv_xname, error);
                        break;
                }

------------------------------------------------------------------------

'm' is leaked.

Found by The Brainy Code Scanner.

Maxime

Reply via email to