Date: Tue, 18 Mar 2014 16:46:24 +0400 From: Gleb Smirnoff <glebius@FreeBSD.org> To: Andrew Rybchenko <Andrew.Rybchenko@oktetlabs.ru> Cc: net@FreeBSD.org Subject: Re: [PATCH 1/6] sfxge: fix mbuf leak if it does not fit in software queue Message-ID: <20140318124624.GD1499@FreeBSD.org> In-Reply-To: <53280DB3.4080900@oktetlabs.ru> References: <53280DB3.4080900@oktetlabs.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Andrew,
On Tue, Mar 18, 2014 at 01:11:15PM +0400, Andrew Rybchenko wrote:
A>
A> sfxge: fix mbuf leak if it does not fit in software queue
A>
A> mbuf should be owned by if_transmit function in any case.
A>
A> Submitted-by: Andrew Rybchenko <Andrew.Rybchenko@oktetlabs.ru>
A> Sponsored by: Solarflare Communications, Inc.
Can we simplify the function while here?
--
Totus tuus, Glebius.
[-- Attachment #2 --]
Index: sfxge_tx.c
===================================================================
--- sfxge_tx.c (revision 263296)
+++ sfxge_tx.c (working copy)
@@ -498,7 +498,6 @@ int
sfxge_tx_packet_add(struct sfxge_txq *txq, struct mbuf *m)
{
int locked;
- int rc;
/*
* Try to grab the txq lock. If we are able to get the lock,
@@ -511,10 +510,9 @@ sfxge_tx_packet_add(struct sfxge_txq *txq, struct
* Can only fail if we weren't able to get the lock.
*/
if (sfxge_tx_qdpl_put(txq, m, locked) != 0) {
- KASSERT(!locked,
- ("sfxge_tx_qdpl_put() failed locked"));
- rc = ENOBUFS;
- goto fail;
+ KASSERT(!locked, ("sfxge_tx_qdpl_put() failed locked"));
+ m_freem(m);
+ return (ENOBUFS);
}
/*
@@ -534,10 +532,6 @@ sfxge_tx_packet_add(struct sfxge_txq *txq, struct
}
return (0);
-
-fail:
- return (rc);
-
}
static void
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140318124624.GD1499>
