diff options
author | Johannes Berg <johannes.berg@intel.com> | 2014-10-13 13:43:29 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2014-10-22 11:30:30 +0200 |
commit | 4619194a49bfbbb03d20d4ca45c3eb1dc8297d9d (patch) | |
tree | 55b90997564602f237f2168a371bad73bebcdea4 | |
parent | 02219b3abca59fca81711bfe7ee78df7abad97ce (diff) |
mac80211: don't remove tainted keys after not programming
When a key is tainted during resume, it is no longer programmed
into the device; however, it's uploaded flag may (will) be set.
Clear the flag when not programming it because it's tainted to
avoid attempting to remove it again later.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | net/mac80211/key.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/net/mac80211/key.c b/net/mac80211/key.c index 4712150dc210..434a91ad12c8 100644 --- a/net/mac80211/key.c +++ b/net/mac80211/key.c @@ -94,8 +94,17 @@ static int ieee80211_key_enable_hw_accel(struct ieee80211_key *key) might_sleep(); - if (key->flags & KEY_FLAG_TAINTED) + if (key->flags & KEY_FLAG_TAINTED) { + /* If we get here, it's during resume and the key is + * tainted so shouldn't be used/programmed any more. + * However, its flags may still indicate that it was + * programmed into the device (since we're in resume) + * so clear that flag now to avoid trying to remove + * it again later. + */ + key->flags &= ~KEY_FLAG_UPLOADED_TO_HARDWARE; return -EINVAL; + } if (!key->local->ops->set_key) goto out_unsupported; |