Skip to content

Commit

Permalink
mac80211: fix key todo list order
Browse files Browse the repository at this point in the history
When we add multiple todo entries, we rely on them being executed
mostly in the right order, especially when a key is being replaced.
But when a default key is replaced, the todo list order will differ
from the order when the key being replaced is not a default key, so
problems will happen. Hence, just move each todo item to the end of
the list when it is added so we can in the other code ensure that
hw accel for a key will be disabled before it is enabled for the
replacement.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Johannes Berg authored and John W. Linville committed Apr 16, 2008
1 parent b16bd15 commit 245cbe7
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions net/mac80211/key.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,12 @@ static void add_todo(struct ieee80211_key *key, u32 flag)

spin_lock(&todo_lock);
key->flags |= flag;
/* only add if not already added */
if (list_empty(&key->todo))
list_add(&key->todo, &todo_list);
/*
* Remove again if already on the list so that we move it to the end.
*/
if (!list_empty(&key->todo))
list_del(&key->todo);
list_add_tail(&key->todo, &todo_list);
schedule_work(&todo_work);
spin_unlock(&todo_lock);
}
Expand Down

0 comments on commit 245cbe7

Please sign in to comment.