mac80211: fix debugfs default key oops

Under certain circumstances (in AP mode) the debugfs function
that is supposed to add the default key symlink can encounter
a NULL default_key pointer. This patch makes it handle that
situtation gracefully.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Johannes Berg 2008-05-03 01:04:47 +02:00 коммит произвёл John W. Linville
Родитель d5251aea15
Коммит 78520cad4b
1 изменённых файлов: 12 добавлений и 3 удалений

Просмотреть файл

@ -255,14 +255,23 @@ void ieee80211_debugfs_key_remove(struct ieee80211_key *key)
void ieee80211_debugfs_key_add_default(struct ieee80211_sub_if_data *sdata) void ieee80211_debugfs_key_add_default(struct ieee80211_sub_if_data *sdata)
{ {
char buf[50]; char buf[50];
struct ieee80211_key *key;
if (!sdata->debugfsdir) if (!sdata->debugfsdir)
return; return;
sprintf(buf, "../keys/%d", sdata->default_key->debugfs.cnt); /* this is running under the key lock */
sdata->debugfs.default_key =
debugfs_create_symlink("default_key", sdata->debugfsdir, buf); 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) void ieee80211_debugfs_key_remove_default(struct ieee80211_sub_if_data *sdata)
{ {
if (!sdata) if (!sdata)