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

From: John W. Linville
Date: Thu Dec 01 2011 - 11:00:49 EST


On Thu, Dec 01, 2011 at 04:23:19PM +0200, Eliad Peller wrote:
> On Thu, Dec 1, 2011 at 4:05 PM, Michal Hocko <mhocko@xxxxxxx> wrote:
> > On Thu 01-12-11 13:44:40, Michal Hocko wrote:
> >> On Thu 01-12-11 12:59:12, Stanislaw Gruszka wrote:
> >> > On Thu, Dec 01, 2011 at 11:55:38AM +0100, Michal Hocko wrote:
> >> > > [  349.316070] iwl3945_rs_free_sta rs_sta f4be1ac0
> >> > > [  349.316076] ------------[ cut here ]------------
> >> > > [  349.316097] WARNING: at drivers/net/wireless/iwlegacy/iwl-3945-rs.c:438 iwl3945_rs_free_sta+0x33/0x42 [iwl3945]()
> >> >
> >> > Johannes pointed on irc that this problem is most likely caused by:
> >> >
> >> > commit f785d83a19bca326f79d127a413e35769afc0105
> >> > Author: Eliad Peller <eliad@xxxxxxxxxx>
> >> > Date:   Mon Aug 8 16:50:22 2011 +0300
> >> >
> >> >     mac80211: clear sta.drv_priv on reconfiguration
> >> >
> >> > Michal, could you confirm that? If that is the root of the problem, we
> >> > need patch for iwlegacy (and iwlwifi) that allocate separate memory for
> >> > rc structures.
> >>
> >> Should I just revert it?
> >
> > Reverted and guess what ;)
> > Yeah, it works. So feel free to add
> > Reported-adn-Tested-by: Michal Hocko <mhocko@xxxxxxx>
> > to the revert.
> >
> cool. after giving it a second look, i agree with Stanislaw - let's
> continue with the revert.

I'm reverting it now.

> > Anyway, I have really no idea about the 80211 stack but the patch
> > doesn't seem to be correct from the layering POV. Why should generic
> > layer clear something that is driver private data (or at least the
> > naming suggests that it is driver specific data)?
>
> the driver should "know" the station (and its private data) only
> between the .sta_add() and .sta_remove() callbacks.
> on suspend, we do call sta_remove(), so it's valid to clear the private data.
>
> the problem is that the rate control also uses the same private data,
> and is valid also after sta_remove() was called. i think the right
> solution is to split the generic private data and the rate control
> private data.

Sounds like a reasonable plan to me -- thanks for volunteering! :-)

John
--
John W. Linville Someday the world will need a hero, and you
linville@xxxxxxxxxxxxx might be all we have. Be ready.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/