diff options
author | 2020-06-03 11:37:39 +0000 | |
---|---|---|
committer | 2020-06-03 11:37:39 +0000 | |
commit | 6346e6bfe3cb0a902da86a620f391730c7a70663 (patch) | |
tree | 9780393b928d40ec8cd9c108246e330e596d7a6f | |
parent | Import regenerated moduli file. (diff) | |
download | wireguard-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.c | 5 | ||||
-rw-r--r-- | sys/dev/pci/if_wpi.c | 5 |
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; |