Search Linux Wireless

Re: [PATCH] mac80211: Fix oops on wme.c where mdev is assumed to be a wiphy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2008-09-26 at 02:01 -0700, Luis R. Rodriguez wrote:
> After Johannes' patch which set mdev as non wiphy
> there were some remaining bits of code which required
> changing the assumption that mdev was a wiphy. We
> change two callers to get to struct ieee80211_local
> the non-wiphy and actual mdev way.
> 
> Signed-off-by: Luis R. Rodriguez <lrodriguez@xxxxxxxxxxx>

Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>

I _really_ wonder why I haven't run into this. Odd. Thanks for fixing.

> ---
> 
> Tested with ath5k on v2.6.27-rc7-1972-gfb8961a.
> 
>  net/mac80211/wme.c |   19 +++++++++++++++++--
>  1 files changed, 17 insertions(+), 2 deletions(-)
> 
> diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c
> index 6748ded..7d114bd 100644
> --- a/net/mac80211/wme.c
> +++ b/net/mac80211/wme.c
> @@ -75,8 +75,16 @@ static int wme_downgrade_ac(struct sk_buff *skb)
>  /* Indicate which queue to use.  */
>  static u16 classify80211(struct sk_buff *skb, struct net_device *dev)
>  {
> -	struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
> +	struct ieee80211_local *local;
>  	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
> +	struct ieee80211_master_priv *mpriv;
> +
> +	/* this is not for wiphys, just for mdev */
> +	BUG_ON (dev->ieee80211_ptr);
> +
> +	mpriv = netdev_priv(dev);
> +	local = mpriv->local;
> +
>  
>  	if (!ieee80211_is_data(hdr->frame_control)) {
>  		/* management frames go on AC_VO queue, but are sent
> @@ -114,12 +122,19 @@ static u16 classify80211(struct sk_buff *skb, struct net_device *dev)
>  u16 ieee80211_select_queue(struct net_device *dev, struct sk_buff *skb)
>  {
>  	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
> -	struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
> +	struct ieee80211_local *local;
>  	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
> +	struct ieee80211_master_priv *mpriv;
>  	struct sta_info *sta;
>  	u16 queue;
>  	u8 tid;
>  
> +	/* this is not for wiphys, just for mdev */
> +	BUG_ON (dev->ieee80211_ptr);
> +
> +	mpriv = netdev_priv(dev);
> +	local = mpriv->local;
> +
>  	queue = classify80211(skb, dev);
>  	if (unlikely(queue >= local->hw.queues))
>  		queue = local->hw.queues - 1;

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux