The is_ieee80211_device function must ensure that the passed net_device belongs to the hardware device we are working with.
Signed-off-by: Jiri Benc <[EMAIL PROTECTED]> --- net/d80211/ieee80211.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) 54bac502265add95b8ca098ccf62c1d506daeb86 diff --git a/net/d80211/ieee80211.c b/net/d80211/ieee80211.c index 1ef2707..3efba6a 100644 --- a/net/d80211/ieee80211.c +++ b/net/d80211/ieee80211.c @@ -1123,9 +1123,10 @@ __ieee80211_tx_prepare(struct ieee80211_ } -static int inline is_ieee80211_device(struct net_device *dev) +static int inline is_ieee80211_device(struct net_device *dev, + struct net_device *master) { - return (dev->ieee80211_ptr != NULL); + return (dev->ieee80211_ptr == master->ieee80211_ptr); } /* Device in tx->dev has a reference added; use dev_put(tx->dev) when @@ -1140,7 +1141,7 @@ static void inline ieee80211_tx_prepare( pkt_data = (struct ieee80211_tx_packet_data *)skb->cb; dev = dev_get_by_index(pkt_data->ifindex); - if (unlikely(dev && !is_ieee80211_device(dev))) { + if (unlikely(dev && !is_ieee80211_device(dev, mdev))) { dev_put(dev); dev = NULL; } @@ -1395,7 +1396,7 @@ static int ieee80211_master_start_xmit(s if (pkt_data->ifindex) odev = dev_get_by_index(pkt_data->ifindex); - if (unlikely(odev && !is_ieee80211_device(odev))) { + if (unlikely(odev && !is_ieee80211_device(odev, dev))) { dev_put(odev); odev = NULL; } -- 1.3.0 - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html