Patch "nl80211: Sanitize array index in parse_txq_params" has been added to the 4.15-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
nl80211: Sanitize array index in parse_txq_params
to the 4.15-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
nl80211_Sanitize_array_index_in_parse_txq_params.patch
and it can be found in the queue-4.15 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Subject: nl80211: Sanitize array index in parse_txq_params
From: Dan Williams [email protected]
Date: Mon Jan 29 17:03:15 2018 -0800
From: Dan Williams [email protected]
commit 259d8c1e984318497c84eef547bbb6b1d9f4eb05
Wireless drivers rely on parse_txq_params to validate that txq_params->ac is less than NL80211_NUM_ACS by the time the low-level driver's ->conf_tx() handler is called. Use a new helper, array_index_nospec(), to sanitize txq_params->ac with respect to speculation. I.e. ensure that any speculation into ->conf_tx() handlers is done with a value of txq_params->ac that is within the bounds of [0, NL80211_NUM_ACS).
--- net/wireless/nl80211.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
net/wireless/nl80211.c +6 -3
@@ -16,6 +16,7 @@#include <linux/nl80211.h> #include <linux/rtnetlink.h> #include <linux/netlink.h> +#include <linux/nospec.h> #include <linux/etherdevice.h> #include <net/net_namespace.h> #include <net/genetlink.h>
@@ -2056,20 +2057,22 @@ static const struct nla_policy txq_paramstatic int parse_txq_params (struct nlattr *tb[],struct ieee80211_txq_params *txq_params) { +u8 ac; +if (!tb[NL80211_TXQ_ATTR_AC ] || !tb[NL80211_TXQ_ATTR_TXOP ] || !tb[NL80211_TXQ_ATTR_CWMIN ] || !tb[NL80211_TXQ_ATTR_CWMAX ] || !tb[NL80211_TXQ_ATTR_AIFS ])return -EINVAL ; - txq_params->ac =nla_get_u8 (tb[NL80211_TXQ_ATTR_AC ]); + ac =nla_get_u8 (tb[NL80211_TXQ_ATTR_AC ]); txq_params->txop =nla_get_u16 (tb[NL80211_TXQ_ATTR_TXOP ]); txq_params->cwmin =nla_get_u16 (tb[NL80211_TXQ_ATTR_CWMIN ]); txq_params->cwmax =nla_get_u16 (tb[NL80211_TXQ_ATTR_CWMAX ]); txq_params->aifs =nla_get_u8 (tb[NL80211_TXQ_ATTR_AIFS ]); -if (txq_params->ac >=NL80211_NUM_ACS ) +if (ac >=NL80211_NUM_ACS )return -EINVAL ; - + txq_params->ac =array_index_nospec (ac,NL80211_NUM_ACS );return 0 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.15/nl80211_Sanitize_array_index_in_parse_txq_params.patch