Looking at the traceback that John Clemens just posted -- it looks
pretty obviously like another variation of the same class of deadlock
that I described before:

 - BeaconTimeout() ran from a timer, and calls into MlmeHandler()
 - MlmeHandler() runs the table-based state machine
 - The state machine calls MlmeJoinReqAction()
 - Right at the top of the function, MlmeJoinReqAction() does
        del_timer_sync(&pAd->MlmeAux.BeaconTimer);
 - But we're running from the BecaonTimer callback already

and voila, we have another "wait for timer to finish from within timer
callback" deadlock.

Looking at the rt61 driver source, I really feel it was a mistake to
merge this into the Ubuntu kernel in the first place.  I realize that
there are probably some people who are using the rt61 driver without
lock ups, but at this point I don't think feisty should ship with rt61
enabled by default.

I think the reason this bug is having a more severe impact now is that
all kernels are built with CONFIG_SMP now, so del_timer_sync() is never
converted to del_timer().  So another possible fix would be to enable
the code in rtmp.h that does:

#undef del_timer_sync
#define del_timer_sync(x) del_timer(x)

that would probably convert this easily-triggered deadlock into much
rarer strange crashes on SMP systems.  (Although I know that almost
every modern system is dual-core at least)

-- 
[rt61] Lockups running Feisty on x86-64
https://bugs.launchpad.net/bugs/90243
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
[EMAIL PROTECTED]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to