Re: [3.2-rc3] 100% CPU usage while in del_timer_sync fromiwl3945_rs_free_sta

From: Stanislaw Gruszka
Date: Wed Nov 30 2011 - 10:39:07 EST


On Wed, Nov 30, 2011 at 03:03:16PM +0100, Michal Hocko wrote:
> No, didn't help unfortunately...

Lets gather some more messages. Please apply attached simple patch,
recompile with:
CONFIG_MAC80211_DEBUG_MENU=y
CONFIG_MAC80211_VERBOSE_DEBUG=y
and provide dmesg.

Thanks
Stanislaw
diff --git a/drivers/net/wireless/iwlegacy/iwl-3945-rs.c b/drivers/net/wireless/iwlegacy/iwl-3945-rs.c
index 8faeaf2..c728f94 100644
--- a/drivers/net/wireless/iwlegacy/iwl-3945-rs.c
+++ b/drivers/net/wireless/iwlegacy/iwl-3945-rs.c
@@ -413,6 +413,7 @@ static void *iwl3945_rs_alloc_sta(void *iwl_priv, struct ieee80211_sta *sta, gfp
IWL_DEBUG_RATE(priv, "enter\n");

rs_sta = &psta->rs_sta;
+ printk("%s rs_sta %p\n", __func__, rs_sta);

spin_lock_init(&rs_sta->lock);
init_timer(&rs_sta->rate_scale_flush);
@@ -432,6 +433,10 @@ static void iwl3945_rs_free_sta(void *iwl_priv, struct ieee80211_sta *sta,
* to use iwl_priv to print out debugging) since it may not be fully
* initialized at this point.
*/
+
+ printk("%s rs_sta %p\n", __func__, rs_sta);
+ if (WARN_ON(rs_sta->rate_scale_flush.base == NULL))
+ return;
del_timer_sync(&rs_sta->rate_scale_flush);
}