summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmatthew <jmatthew@openbsd.org>2020-06-03 11:37:39 +0000
committerjmatthew <jmatthew@openbsd.org>2020-06-03 11:37:39 +0000
commit6346e6bfe3cb0a902da86a620f391730c7a70663 (patch)
tree9780393b928d40ec8cd9c108246e330e596d7a6f
parentImport regenerated moduli file. (diff)
downloadwireguard-openbsd-6346e6bfe3cb0a902da86a620f391730c7a70663.tar.xz
wireguard-openbsd-6346e6bfe3cb0a902da86a620f391730c7a70663.zip
Add missing ieee80211_release_node() calls in cases where hardware
decryption failed. The node here is always ic_bss, for which the reference count isn't actually used (it's always freed when the interface detaches), so missing these calls wasn't really a problem. ok stsp@
-rw-r--r--sys/dev/pci/if_iwn.c5
-rw-r--r--sys/dev/pci/if_wpi.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/pci/if_iwn.c b/sys/dev/pci/if_iwn.c
index 08353b228b8..76bdd28a6d3 100644
--- a/sys/dev/pci/if_iwn.c
+++ b/sys/dev/pci/if_iwn.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_iwn.c,v 1.231 2020/05/23 08:42:51 stsp Exp $ */
+/* $OpenBSD: if_iwn.c,v 1.232 2020/06/03 11:37:39 jmatthew Exp $ */
/*-
* Copyright (c) 2007-2010 Damien Bergamini <damien.bergamini@free.fr>
@@ -2128,6 +2128,7 @@ iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc,
ic->ic_stats.is_ccmp_dec_errs++;
ifp->if_ierrors++;
m_freem(m);
+ ieee80211_release_node(ic, ni);
return;
}
/* Check whether decryption was successful or not. */
@@ -2140,11 +2141,13 @@ iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc,
ic->ic_stats.is_ccmp_dec_errs++;
ifp->if_ierrors++;
m_freem(m);
+ ieee80211_release_node(ic, ni);
return;
}
if (iwn_ccmp_decap(sc, m, ni) != 0) {
ifp->if_ierrors++;
m_freem(m);
+ ieee80211_release_node(ic, ni);
return;
}
rxi.rxi_flags |= IEEE80211_RXI_HWDEC;
diff --git a/sys/dev/pci/if_wpi.c b/sys/dev/pci/if_wpi.c
index 8fc0600197e..7b95d900f4f 100644
--- a/sys/dev/pci/if_wpi.c
+++ b/sys/dev/pci/if_wpi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_wpi.c,v 1.151 2020/05/23 08:42:51 stsp Exp $ */
+/* $OpenBSD: if_wpi.c,v 1.152 2020/06/03 11:37:39 jmatthew Exp $ */
/*-
* Copyright (c) 2006-2008
@@ -1271,6 +1271,7 @@ wpi_rx_done(struct wpi_softc *sc, struct wpi_rx_desc *desc,
ic->ic_stats.is_ccmp_dec_errs++;
ifp->if_ierrors++;
m_freem(m);
+ ieee80211_release_node(ic, ni);
return;
}
/* Check whether decryption was successful or not. */
@@ -1279,11 +1280,13 @@ wpi_rx_done(struct wpi_softc *sc, struct wpi_rx_desc *desc,
ic->ic_stats.is_ccmp_dec_errs++;
ifp->if_ierrors++;
m_freem(m);
+ ieee80211_release_node(ic, ni);
return;
}
if (wpi_ccmp_decap(sc, m, &ni->ni_pairwise_key) != 0) {
ifp->if_ierrors++;
m_freem(m);
+ ieee80211_release_node(ic, ni);
return;
}
rxi.rxi_flags |= IEEE80211_RXI_HWDEC;