kern/140634: destroying if_lagg interface with if_vlan members causing 100% usage by ifconfig

Dmitriy gigabyte.tmn at gmail.com
Tue Nov 17 09:00:13 UTC 2009


>Number:         140634
>Category:       kern
>Synopsis:       destroying if_lagg interface with if_vlan members causing 100% usage by ifconfig
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Nov 17 09:00:11 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Dmitriy
>Release:        7.2-RELEASE
>Organization:
NetLine NSP
>Environment:
FreeBSD bras2.domain.ru 7.2-RELEASE FreeBSD 7.2-RELEASE #4: Sun Nov 15 03:53:05 YEKT 2009     dm at bras2.domain.ru:/mnt/sources/src-7.2/sys/i386/compile/BRAS2  i386
>Description:
I use if_vlan over if_lagg over some if_em's.
If i need to delete interfaces cloning by 
/etc/rc.d/netif clonedown
i got 100% usage by "ifconfig lagg0 destroy"

If delete vlan's from lagg0 first, 
"ifconfig lagg0 destroy" works properly.

I build kernel with INVARIANTs and WITNESS and got panic:
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...

Unread portion of the kernel message buffer:
<5>lagg0: link state changed to DOWN
<5>em1: link state changed to DOWN
<5>vlan100: link state changed to DOWN
<5>vlan8: link state changed to DOWN
panic: if_delmulti: ifnet went away
cpuid = 0
KDB: enter: panic
Physical memory: 1012 MB
Dumping 69 MB: 54 38 22 6

Reading symbols from /boot/kernel/coretemp.ko...Reading symbols from /boot/kernel/coretemp.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/coretemp.ko
Reading symbols from /boot/kernel/if_em_yandex_696.ko...Reading symbols from /boot/kernel/if_em_yandex_696.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/if_em_yandex_696.ko
Reading symbols from /boot/kernel/acpi.ko...Reading symbols from /boot/kernel/acpi.ko.symbols...done.
done.
Loaded symbols for /boot/kernel/acpi.ko
#0  doadump () at pcpu.h:196
196             __asm __volatile("movl %%fs:0,%0" : "=r" (td));
(kgdb) bt
#0  doadump () at pcpu.h:196
#1  0xc044c419 in db_fncall (dummy1=-1066288168, dummy2=0, dummy3=-1,
    dummy4=0xf9a7076c "") at ../../../ddb/db_command.c:516
#2  0xc044c9cf in db_command (last_cmdp=0xc0792c74, cmd_table=0x0, dopager=0)
    at ../../../ddb/db_command.c:413
#3  0xc044ca44 in db_command_script (command=0xc0793b8c "call doadump")
    at ../../../ddb/db_command.c:484
#4  0xc04502b0 in db_script_exec (scriptname=0xf9a70878 "kdb.enter.panic",
    warnifnotfound=Variable "warnifnotfound" is not available.
) at ../../../ddb/db_script.c:302
#5  0xc045038d in db_script_kdbenter (eventname=0xc072bdcd "panic")
    at ../../../ddb/db_script.c:324
#6  0xc044e298 in db_trap (type=3, code=0) at ../../../ddb/db_main.c:227
#7  0xc053fa56 in kdb_trap (type=3, code=0, tf=0xf9a709b0)
    at ../../../kern/subr_kdb.c:524
#8  0xc06e7e6f in trap (frame=0xf9a709b0) at ../../../i386/i386/trap.c:688
#9  0xc06cc78b in calltrap () at ../../../i386/i386/exception.s:159
#10 0xc053fbda in kdb_enter_why (why=0xc072bdcd "panic", msg=0xc072bdcd "panic")
    at cpufunc.h:60
#11 0xc05139c6 in panic (fmt=0xc0738ebf "%s: ifnet went away")
    at ../../../kern/kern_shutdown.c:557
#12 0xc05ac0b6 in if_delmulti (ifp=0xc47c7000, sa=0xf9a70a72) at ../../../net/if.c:2565
#13 0xc05b6960 in vlan_unconfig_locked (ifp=0xc45ea800) at ../../../net/if_vlan.c:1120
#14 0xc05b6e4f in vlan_ifdetach (arg=0x0, ifp=0xc47c7000) at ../../../net/if_vlan.c:497
#15 0xc05af87d in if_detach (ifp=0xc47c7000) at ../../../net/if.c:830
#16 0xc05b18fd in ether_ifdetach (ifp=0xc47c7000) at ../../../net/if_ethersubr.c:926
#17 0xc05b3982 in lagg_clone_destroy (ifp=0xc47c7000) at ../../../net/if_lagg.c:282
#18 0xc05b0a27 in ifc_simple_destroy (ifc=0xc07795c0, ifp=0xc47c7000)
    at ../../../net/if_clone.c:560
#19 0xc05b0d91 in if_clone_destroyif (ifc=0xc07795c0, ifp=0xc47c7000)
    at ../../../net/if_clone.c:218
#20 0xc05b136f in if_clone_destroy (name=0xc5d382a0 "lagg0")
    at ../../../net/if_clone.c:196
#21 0xc05affeb in ifioctl (so=0xc4899680, cmd=2149607801, data=0xc5d382a0 "lagg0",
    td=0xc47f2230) at ../../../net/if.c:1997
#22 0xc0557947 in soo_ioctl (fp=0xc5b54850, cmd=2149607801, data=0xc5d382a0,
    active_cred=0xc5b6c600, td=0xc47f2230) at ../../../kern/sys_socket.c:191
#23 0xc0551de3 in kern_ioctl (td=0xc47f2230, fd=3, com=2149607801,
    data=0xc5d382a0 "lagg0") at file.h:269
#24 0xc0551f44 in ioctl (td=0xc47f2230, uap=0xf9a70cfc)
    at ../../../kern/sys_generic.c:571
#25 0xc06e7643 in syscall (frame=0xf9a70d38) at ../../../i386/i386/trap.c:1090
#26 0xc06cc7f0 in Xint0x80_syscall () at ../../../i386/i386/exception.s:255
#27 0x00000033 in ?? ()
Previous frame inner to this frame (corrupt stack?)
>How-To-Repeat:
ifconfig lagg0 create
ifconfig vlan100 create
ifconfig vlan100 vlandev lagg0 vlan 100
ifconfig lagg0 destroy
>Fix:
maybe /etc/rc.d/netif script must delete all vlan members of existing if_lagg interfaces and then destroy if_lagg interfaces.

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list