Subject: [PATCH] rtl8187: Add missing priv->vif assignments

This adds missing priv->vif assignments after "mac80211: don't use
interface indices in drivers" change. As rtl8180, rtl8187 also needs
priv->vif to be set, as without this an oops can happen in rtl8187_tx
function (priv->vif is passed to ieee80211_rts_duration).

Signed-off-by: Herton Ronaldo Krzesinski <[email protected]>
---
drivers/net/wireless/rtl8187_dev.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c
index c03834d..d5787b3 100644
--- a/drivers/net/wireless/rtl8187_dev.c
+++ b/drivers/net/wireless/rtl8187_dev.c
@@ -546,6 +546,8 @@ static int rtl8187_add_interface(struct ieee80211_hw *dev,
return -EOPNOTSUPP;
}

+ priv->vif = conf->vif;
+
rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
for (i = 0; i < ETH_ALEN; i++)
rtl818x_iowrite8(priv, &priv->map->MAC[i],
@@ -560,6 +562,7 @@ static void rtl8187_remove_interface(struct ieee80211_hw *dev,
{
struct rtl8187_priv *priv = dev->priv;
priv->mode = IEEE80211_IF_TYPE_MNTR;
+ priv->vif = NULL;
}

static int rtl8187_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf)
--
1.5.4.3


--
[]'s
Herton


2008-04-09 20:58:00

by Pavel Roskin

[permalink] [raw]
Subject: Re: [PATCH] rtl8187: Add missing priv->vif assignments


On Wed, 2008-04-09 at 16:38 -0300, Herton Ronaldo Krzesinski wrote:
> This adds missing priv->vif assignments after "mac80211: don't use
> interface indices in drivers" change. As rtl8180, rtl8187 also needs
> priv->vif to be set, as without this an oops can happen in rtl8187_tx
> function (priv->vif is passed to ieee80211_rts_duration).
>
> Signed-off-by: Herton Ronaldo Krzesinski <[email protected]>
Acked-by: Pavel Roskin <[email protected]>

This patch fixes a potential kernel panic if RTS/CTS is used. It may be
a good candidate for 2.6.25.

If somebody has an rtl8187 (as opposed to rtl8187b) and the patch indeed
fixes RTS/CTS, please speak up.

--
Regards,
Pavel Roskin