nl80211: Sanitize array index in parse_txq_params
authorDan Williams <dan.j.williams@intel.com>
Tue, 30 Jan 2018 01:03:15 +0000 (17:03 -0800)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 30 Jan 2018 20:54:32 +0000 (21:54 +0100)
commit259d8c1e984318497c84eef547bbb6b1d9f4eb05
tree9fc57a04ca95579ebbf6dbaf06b6bab792cb1395
parent56c30ba7b348b90484969054d561f711ba196507
nl80211: Sanitize array index in parse_txq_params

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).

Reported-by: Christian Lamparter <chunkeey@gmail.com>
Reported-by: Elena Reshetova <elena.reshetova@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-arch@vger.kernel.org
Cc: kernel-hardening@lists.openwall.com
Cc: gregkh@linuxfoundation.org
Cc: linux-wireless@vger.kernel.org
Cc: torvalds@linux-foundation.org
Cc: "David S. Miller" <davem@davemloft.net>
Cc: alan@linux.intel.com
Link: https://lkml.kernel.org/r/151727419584.33451.7700736761686184303.stgit@dwillia2-desk3.amr.corp.intel.com
net/wireless/nl80211.c