iwlwifi: Sanity check for sta_id
On my testing, I saw some strange behavior [ 421.739708] iwlwifi 0000:01:00.0: ACTIVATE a non DRIVER active station id 148 addr 00:00:00:00:00:00 [ 421.739719] iwlwifi 0000:01:00.0: iwl_sta_ucode_activate Added STA id 148 addr 00:00:00:00:00:00 to uCode not sure how it happen, but adding the sanity check to prevent memory corruption Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
017664fe8e
commit
2da424b077
1 changed files with 7 additions and 4 deletions
|
@ -35,9 +35,12 @@
|
|||
#include "iwl-trans.h"
|
||||
|
||||
/* priv->shrd->sta_lock must be held */
|
||||
static void iwl_sta_ucode_activate(struct iwl_priv *priv, u8 sta_id)
|
||||
static int iwl_sta_ucode_activate(struct iwl_priv *priv, u8 sta_id)
|
||||
{
|
||||
|
||||
if (sta_id >= IWLAGN_STATION_COUNT) {
|
||||
IWL_ERR(priv, "invalid sta_id %u", sta_id);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (!(priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE))
|
||||
IWL_ERR(priv, "ACTIVATE a non DRIVER active station id %u "
|
||||
"addr %pM\n",
|
||||
|
@ -53,6 +56,7 @@ static void iwl_sta_ucode_activate(struct iwl_priv *priv, u8 sta_id)
|
|||
IWL_DEBUG_ASSOC(priv, "Added STA id %u addr %pM to uCode\n",
|
||||
sta_id, priv->stations[sta_id].sta.sta.addr);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int iwl_process_add_sta_resp(struct iwl_priv *priv,
|
||||
|
@ -77,8 +81,7 @@ static int iwl_process_add_sta_resp(struct iwl_priv *priv,
|
|||
switch (pkt->u.add_sta.status) {
|
||||
case ADD_STA_SUCCESS_MSK:
|
||||
IWL_DEBUG_INFO(priv, "REPLY_ADD_STA PASSED\n");
|
||||
iwl_sta_ucode_activate(priv, sta_id);
|
||||
ret = 0;
|
||||
ret = iwl_sta_ucode_activate(priv, sta_id);
|
||||
break;
|
||||
case ADD_STA_NO_ROOM_IN_TABLE:
|
||||
IWL_ERR(priv, "Adding station %d failed, no room in table.\n",
|
||||
|
|
Loading…
Reference in a new issue