mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
iwlegacy: don't mess up the SCD when removing a key
commit b48d966526
upstream.
When we remove a key, we put a key index which was supposed
to tell the fw that we are actually removing the key. But
instead the fw took that index as a valid index and messed
up the SRAM of the device.
This memory corruption on the device mangled the data of
the SCD. The impact on the user is that SCD queue 2 got
stuck after having removed keys.
Reported-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
57cff81612
commit
1214b78524
1 changed files with 2 additions and 2 deletions
|
@ -3405,7 +3405,7 @@ il4965_remove_dynamic_key(struct il_priv *il,
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (il->stations[sta_id].sta.key.key_offset == WEP_INVALID_OFFSET) {
|
||||
if (il->stations[sta_id].sta.key.key_flags & STA_KEY_FLG_INVALID) {
|
||||
IL_WARN("Removing wrong key %d 0x%x\n", keyconf->keyidx,
|
||||
key_flags);
|
||||
spin_unlock_irqrestore(&il->sta_lock, flags);
|
||||
|
@ -3420,7 +3420,7 @@ il4965_remove_dynamic_key(struct il_priv *il,
|
|||
memset(&il->stations[sta_id].sta.key, 0, sizeof(struct il4965_keyinfo));
|
||||
il->stations[sta_id].sta.key.key_flags =
|
||||
STA_KEY_FLG_NO_ENC | STA_KEY_FLG_INVALID;
|
||||
il->stations[sta_id].sta.key.key_offset = WEP_INVALID_OFFSET;
|
||||
il->stations[sta_id].sta.key.key_offset = keyconf->hw_key_idx;
|
||||
il->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK;
|
||||
il->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
|
||||
|
||||
|
|
Loading…
Reference in a new issue