diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-05-18 19:56:36 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-05-20 14:46:30 -0400 |
commit | e3da574a0ddd3e90a1e2b788b84b94bc17a75172 (patch) | |
tree | dc17ed9268594c1236e1f0b5efae2140b226b5cf /net/wireless/wext-compat.c | |
parent | 73606d00360cb93963aeb7bfbf8bfdbc51cfab9f (diff) | |
download | op-kernel-dev-e3da574a0ddd3e90a1e2b788b84b94bc17a75172.zip op-kernel-dev-e3da574a0ddd3e90a1e2b788b84b94bc17a75172.tar.gz |
cfg80211: allow wext to remove keys that don't exist
Some applications using wireless extensions expect to be able to
remove a key that doesn't exist. One example is wpa_supplicant
which doesn't actually change behaviour when running into an
error while trying to do that, but it prints an error message
which users interpret as wpa_supplicant having problems.
The safe thing to do is not change the behaviour of wireless
extensions any more, so when the driver reports -ENOENT let
the wext bridge code return success to userspace. To guarantee
this, also document that drivers should return -ENOENT when the
key doesn't exist.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/wext-compat.c')
-rw-r--r-- | net/wireless/wext-compat.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c index f98090b..711e00a 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c @@ -504,6 +504,13 @@ static int cfg80211_set_encryption(struct cfg80211_registered_device *rdev, else if (idx == wdev->wext.default_mgmt_key) wdev->wext.default_mgmt_key = -1; } + /* + * Applications using wireless extensions expect to be + * able to delete keys that don't exist, so allow that. + */ + if (err == -ENOENT) + return 0; + return err; } else { if (addr) |