lkml.org 
[lkml]   [2000]   [Nov]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Locking Between User Context and Soft IRQs in 2.4.0
    On Sun, Nov 05, 2000 at 12:28:55PM +1100, Andrew Morton wrote:
    > Andi Kleen wrote:
    > >
    > > On Sat, Nov 04, 2000 at 12:07:34PM -0500, Jeff Garzik wrote:
    > > > Andi Kleen wrote:
    > > > > All the MOD_INC/DEC_USE_COUNT are done inside the modules themselves. There
    > > > > is nothing that would a driver prevent from being unloaded on a different
    > > > > CPU while it is already executing in ->open but has not yet executed the add
    > > > > yet or after it has executed the _DEC but it is still running in module code
    > > > > Normally the windows are pretty small, but very long running interrupt
    > > > > on one CPU hitting exactly in the wrong moment can change that.
    > > >
    > > > Module unload calls unregister_netdev, which grabs rtnl_lock.
    > > > dev->open runs under rtnl_lock.
    > > >
    > > > Given this, how can the driver be unloaded if dev->open is running?
    > >
    > > It does not help, because when the semaphore synchronizes it is already
    > > too late -- free_module already did the zero module count check and
    > > nothing is going to stop it from unloading.
    >
    > aaarrrggh!!!

    A simple fix at least for this case would be a recheck of module count
    after free_module() executed the cleanup function.

    -Andi
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 12:45    [W:2.869 / U:0.416 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site