Message ID | 1416796657-24657-3-git-send-email-sujith@msujith.org (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
Sujith Manoharan <sujith@msujith.org> writes: > From: Sujith Manoharan <c_manoha@qca.qualcomm.com> > > peer->keys needs to be protected by data_lock > since it is also accessed from the WMI path. > > Both install() and clear() routines for peer > keys modify the key contents, so use the data_lock > to avoid races. > > Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Can you also document the field with "protected by data_lock" in core.h?
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 23116c2..2200c64 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -136,7 +136,9 @@ static int ath10k_install_peer_wep_keys(struct ath10k_vif *arvif, if (ret) return ret; + spin_lock_bh(&ar->data_lock); peer->keys[i] = arvif->wep_keys[i]; + spin_unlock_bh(&ar->data_lock); } return 0; @@ -173,7 +175,9 @@ static int ath10k_clear_peer_keys(struct ath10k_vif *arvif, ath10k_warn(ar, "failed to remove peer wep key %d: %d\n", i, ret); + spin_lock_bh(&ar->data_lock); peer->keys[i] = NULL; + spin_unlock_bh(&ar->data_lock); } return first_errno;