From 51ae268c96b9c2c116dab875ac0f1d8fee35fcb6 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 8 May 2009 09:42:33 +0200 Subject: [PATCH] --- yaml --- r: 150259 b: refs/heads/master c: 0b258582fef3a9b15b2372d99164859361faa8db h: refs/heads/master i: 150257: f7ec94cc7a49c9533ee8da25450c52cdc6376260 150255: df9b95e6ad8516a4d4a1473019014013548ec090 v: v3 --- [refs] | 2 +- trunk/net/wireless/wext-compat.c | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 8aeee6f14e79..fe00ce505291 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: aa837e1d6bd1a71b3c30c7738b6c29d41512fe7d +refs/heads/master: 0b258582fef3a9b15b2372d99164859361faa8db diff --git a/trunk/net/wireless/wext-compat.c b/trunk/net/wireless/wext-compat.c index 5ef82f2ca88f..abf6b0a047d8 100644 --- a/trunk/net/wireless/wext-compat.c +++ b/trunk/net/wireless/wext-compat.c @@ -296,22 +296,34 @@ EXPORT_SYMBOL_GPL(cfg80211_wext_siwmlme); struct ieee80211_channel *cfg80211_wext_freq(struct wiphy *wiphy, struct iw_freq *freq) { + struct ieee80211_channel *chan; + int f; + + /* + * Parse frequency - return NULL for auto and + * -EINVAL for impossible things. + */ if (freq->e == 0) { if (freq->m < 0) return NULL; - else - return ieee80211_get_channel(wiphy, - ieee80211_channel_to_frequency(freq->m)); + f = ieee80211_channel_to_frequency(freq->m); } else { int i, div = 1000000; for (i = 0; i < freq->e; i++) div /= 10; - if (div > 0) - return ieee80211_get_channel(wiphy, freq->m / div); - else + if (div <= 0) return ERR_PTR(-EINVAL); + f = freq->m / div; } + /* + * Look up channel struct and return -EINVAL when + * it cannot be found. + */ + chan = ieee80211_get_channel(wiphy, f); + if (!chan) + return ERR_PTR(-EINVAL); + return chan; } EXPORT_SYMBOL_GPL(cfg80211_wext_freq);