If the frequency can not be mapped to a channel structure log it and drop it.
---
The driver was getting an error return from the frequency map. The invalid freq
uency was not in the frequency table, so the channel structure returned null. T
his test fro that case and does not allow the packet to continue up the stack.
---
diff --git a/drivers/net/wireless/orinoco/scan.c b/drivers/net/wireless/orinoco
/scan.c
index 86cb54c..e99ca1c 100644
--- a/drivers/net/wireless/orinoco/scan.c
+++ b/drivers/net/wireless/orinoco/scan.c
@@ -111,6 +111,11 @@ static void orinoco_add_hostscan_result(struct orinoco_pri
vate *priv,
freq = ieee80211_dsss_chan_to_freq(le16_to_cpu(bss->a.channel));
channel = ieee80211_get_channel(wiphy, freq);
+ if (!channel) {
+ printk(KERN_DEBUG "Invalid channel designation %04X(%04X)",
+ bss->a.channel, freq);
+ return; /* Then ignore it for now */
+ }
timestamp = 0;
capability = le16_to_cpu(bss->a.capabilities);
beacon_interval = le16_to_cpu(bss->a.beacon_interv);
Signed-off-by: Joseph J. Gunn <[email protected]>
On Fri, Feb 25, 2011 at 02:08:49AM -0800, Joe Gunn wrote:
> If the frequency can not be mapped to a channel structure log it and drop it.
FWIW, the Signed-off-by goes here. No need to repost, I'll fix it...
> ---
> The driver was getting an error return from the frequency map. The invalid freq
> uency was not in the frequency table, so the channel structure returned null. T
> his test fro that case and does not allow the packet to continue up the stack.
> ---
> diff --git a/drivers/net/wireless/orinoco/scan.c b/drivers/net/wireless/orinoco
> /scan.c
> index 86cb54c..e99ca1c 100644
> --- a/drivers/net/wireless/orinoco/scan.c
> +++ b/drivers/net/wireless/orinoco/scan.c
> @@ -111,6 +111,11 @@ static void orinoco_add_hostscan_result(struct orinoco_pri
> vate *priv,
>
> freq = ieee80211_dsss_chan_to_freq(le16_to_cpu(bss->a.channel));
> channel = ieee80211_get_channel(wiphy, freq);
> + if (!channel) {
> + printk(KERN_DEBUG "Invalid channel designation %04X(%04X)",
> + bss->a.channel, freq);
> + return; /* Then ignore it for now */
> + }
> timestamp = 0;
> capability = le16_to_cpu(bss->a.capabilities);
> beacon_interval = le16_to_cpu(bss->a.beacon_interv);
>
> Signed-off-by: Joseph J. Gunn <[email protected]>
>
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
John W. Linville Someday the world will need a hero, and you
[email protected] might be all we have. Be ready.