Commit 00eb7fe7 authored by Emmanuel Grumbach's avatar Emmanuel Grumbach Committed by John W. Linville

mac80211: fix an oops in several failure paths in key allocation

This patch fixes an oops in several failure paths in key allocation. This
Oops occurs when freeing a key that has not been linked yet, so the
key->sdata is not set.
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 5f4a6fae
...@@ -380,6 +380,15 @@ void ieee80211_key_free(struct ieee80211_key *key) ...@@ -380,6 +380,15 @@ void ieee80211_key_free(struct ieee80211_key *key)
if (!key) if (!key)
return; return;
if (!key->sdata) {
/* The key has not been linked yet, simply free it
* and don't Oops */
if (key->conf.alg == ALG_CCMP)
ieee80211_aes_key_free(key->u.ccmp.tfm);
kfree(key);
return;
}
spin_lock_irqsave(&key->sdata->local->key_lock, flags); spin_lock_irqsave(&key->sdata->local->key_lock, flags);
__ieee80211_key_free(key); __ieee80211_key_free(key);
spin_unlock_irqrestore(&key->sdata->local->key_lock, flags); spin_unlock_irqrestore(&key->sdata->local->key_lock, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment