NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/48733: deadlock in if_output() with interrupt on KERNEL_LOCK



>Number:         48733
>Category:       kern
>Synopsis:       deadlock in if_output() with interrupt on KERNEL_LOCK
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Apr 11 14:40:00 +0000 2014
>Originator:     Wolfgang Stukenbrock
>Release:        NetBSD 6.1 - MAIN
>Organization:
Dr. Nagler & Company GmbH
>Environment:
        
        
System: NetBSD e013 6.1 NetBSD 6.1 (NSW-E013) #64: Tue Oct 22 11:03:30 CEST 
2013  
wgstuken@s012:/export/NetBSD-6.1/N+C-build/.OBJDIR_amd64/export/NetBSD-6.1/src/sys/arch/amd64/compile/NSW-E013
 amd64
Architecture: x86_64
Machine: amd64
>Description:
        Problem located in /src/sys/netinet/ip_output.c.
        Since file revision 1.208 the Kernel-Lock is locked prior calling 
if_output
        on the interface.
        Now - at least the wm-driver - will call splnet() and splx() inside the 
output
        routine.
        If any interrupt occurs in between splnet() and splx(), the interrupt 
is delayed and
        is processes in splx() when the level is released again.
        If such an interrupt is e.g. not MP-SAFE, the call stup in 
intr_biglock_wrapper() is
        used to call the interrupt routine and that one will lock the 
KERNEL-LOCK again.
        So we try to lock it again here -> dead-lock.

        Our system runs fine with 4 8257x interfaces, but after adding 2 
additional 8254x
        interfaces, the system lock-up after a short time. Don't ask me, why 
the if_output
        call takes "to long" with theese two additonal interfaces, but it is 
reproducable.
        I've analysed this several times with DDB. Most times I've seen an 
USB-interrupt
        that dead-lock the system.
>How-To-Repeat:
        Run a lot of trafic over wm-interfaces and do shomething e.g. on USB at 
the same
        time. It is just a question of time till system-dead-lock.
>Fix:
        Fist guess: revert change done from 1.207 to 1.208.
        But I've no idea about side effects.

>Unformatted:
        
        


Home | Main Index | Thread Index | Old Index