summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordamien <damien@openbsd.org>2005-04-16 08:27:41 +0000
committerdamien <damien@openbsd.org>2005-04-16 08:27:41 +0000
commit1c7692b537e5b2381ea38a06a6dc2e0a79d4f03d (patch)
tree464819c85f2f6c0dd999f0d324b9a1d9979b48ef
parentindent (diff)
downloadwireguard-openbsd-1c7692b537e5b2381ea38a06a6dc2e0a79d4f03d.tar.xz
wireguard-openbsd-1c7692b537e5b2381ea38a06a6dc2e0a79d4f03d.zip
don't leak a mbuf when tx fails.
-rw-r--r--sys/dev/usb/if_ral.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/dev/usb/if_ral.c b/sys/dev/usb/if_ral.c
index cd0edea94b8..8534f743de0 100644
--- a/sys/dev/usb/if_ral.c
+++ b/sys/dev/usb/if_ral.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ral.c,v 1.26 2005/04/16 08:26:01 damien Exp $ */
+/* $OpenBSD: if_ral.c,v 1.27 2005/04/16 08:27:41 damien Exp $ */
/*-
* Copyright (c) 2005
@@ -1202,8 +1202,10 @@ ural_tx_mgt(struct ural_softc *sc, struct mbuf *m0, struct ieee80211_node *ni)
USBD_FORCE_SHORT_XFER | USBD_NO_COPY, RAL_TX_TIMEOUT, ural_txeof);
error = usbd_transfer(data->xfer);
- if (error != USBD_NORMAL_COMPLETION && error != USBD_IN_PROGRESS)
+ if (error != USBD_NORMAL_COMPLETION && error != USBD_IN_PROGRESS) {
+ m_freem(m0);
return error;
+ }
sc->tx_queued++;
@@ -1289,8 +1291,10 @@ ural_tx_data(struct ural_softc *sc, struct mbuf *m0, struct ieee80211_node *ni)
USBD_FORCE_SHORT_XFER | USBD_NO_COPY, RAL_TX_TIMEOUT, ural_txeof);
error = usbd_transfer(data->xfer);
- if (error != USBD_NORMAL_COMPLETION && error != USBD_IN_PROGRESS)
+ if (error != USBD_NORMAL_COMPLETION && error != USBD_IN_PROGRESS) {
+ m_freem(m0);
return error;
+ }
sc->tx_queued++;