svn commit: r343463 - stable/12/sys/net80211
Andriy Voskoboinyk
avos at FreeBSD.org
Sat Jan 26 12:28:48 UTC 2019
Author: avos
Date: Sat Jan 26 12:28:47 2019
New Revision: 343463
URL: https://svnweb.freebsd.org/changeset/base/343463
Log:
MFC r343190:
net80211: drop m_pullup call from ieee80211_crypto_decap.
For most wireless drivers Rx mbuf is allocated as one
contiguous chunk; only few are using chains for allocations -
but even then at least MCLBYTES (minus Rx descriptor size) is
available in the first mbuf.
In addition to the above, m_pullup was never called here - otherwise,
reallocation will break post-crypto_decap logic (ieee80211_decap,
ieee80211_deliver_data...), so just remove it; length check is left
in case if some truncated frame appears here.
PR: 234241
Modified:
stable/12/sys/net80211/ieee80211_crypto.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/net80211/ieee80211_crypto.c
==============================================================================
--- stable/12/sys/net80211/ieee80211_crypto.c Sat Jan 26 05:35:24 2019 (r343462)
+++ stable/12/sys/net80211/ieee80211_crypto.c Sat Jan 26 12:28:47 2019 (r343463)
@@ -662,14 +662,15 @@ ieee80211_crypto_decap(struct ieee80211_node *ni, stru
k = &ni->ni_ucastkey;
/*
- * Insure crypto header is contiguous for all decap work.
+ * Insure crypto header is contiguous and long enough for all
+ * decap work.
*/
cip = k->wk_cipher;
- if (m->m_len < hdrlen + cip->ic_header &&
- (m = m_pullup(m, hdrlen + cip->ic_header)) == NULL) {
+ if (m->m_len < hdrlen + cip->ic_header) {
IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_CRYPTO, wh->i_addr2,
- "unable to pullup %s header", cip->ic_name);
- vap->iv_stats.is_rx_wepfail++; /* XXX */
+ "frame is too short (%d < %u) for crypto decap",
+ cip->ic_name, m->m_len, hdrlen + cip->ic_header);
+ vap->iv_stats.is_rx_tooshort++;
*key = NULL;
return (0);
}
More information about the svn-src-stable
mailing list