]> err.no Git - linux-2.6/blobdiff - net/mac80211/debugfs_key.c
Merge branch 'x86/nmi' into x86/devel
[linux-2.6] / net / mac80211 / debugfs_key.c
index bf7027e9ce9fbc2aaa3ab79023064e8cef3537c7..19efc3a6a9327cfd343ab5e62de2a993ec6821bf 100644 (file)
@@ -195,6 +195,7 @@ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
                return;
 
        sprintf(buf, "%d", keycount);
+       key->debugfs.cnt = keycount;
        keycount++;
        key->debugfs.dir = debugfs_create_dir(buf,
                                        key->local->debugfs.keys);
@@ -254,14 +255,23 @@ void ieee80211_debugfs_key_remove(struct ieee80211_key *key)
 void ieee80211_debugfs_key_add_default(struct ieee80211_sub_if_data *sdata)
 {
        char buf[50];
+       struct ieee80211_key *key;
 
        if (!sdata->debugfsdir)
                return;
 
-       sprintf(buf, "../keys/%d", sdata->default_key->conf.keyidx);
-       sdata->debugfs.default_key =
-               debugfs_create_symlink("default_key", sdata->debugfsdir, buf);
+       /* this is running under the key lock */
+
+       key = sdata->default_key;
+       if (key) {
+               sprintf(buf, "../keys/%d", key->debugfs.cnt);
+               sdata->debugfs.default_key =
+                       debugfs_create_symlink("default_key",
+                                              sdata->debugfsdir, buf);
+       } else
+               ieee80211_debugfs_key_remove_default(sdata);
 }
+
 void ieee80211_debugfs_key_remove_default(struct ieee80211_sub_if_data *sdata)
 {
        if (!sdata)