Subject: kern/35273: ex(4) is broken and may cause kernel crash
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Denis Lagno <dlagno@rambler.ru>
List: netbsd-bugs
Date: 12/18/2006 22:35:00
>Number:         35273
>Category:       kern
>Synopsis:       ex(4) is broken and may cause kernel crash
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Dec 18 22:35:00 +0000 2006
>Originator:     Denis Lagno
>Release:        NetBSD 4.99.6
>Organization:
>Environment:
NetBSD flam.gado 4.99.6 NetBSD 4.99.6 (FLAM) #0: Mon Dec 18 05:11:17 MSK 2006  dina@flam.gado:/volatile/worksrc/netbsd-current/obj/sys/arch/i386/compile/FLAM i386
Architecture: i386
Machine: i386
SMP machine
>Description:
I have this network card:
ex0 at pci0 dev 11 function 0: 3Com 3c905B-TX 10/100 Ethernet (rev. 0x24)
ex0: interrupting at ioapic0 pin 17 (irq 10)

# ifconfig ex0
ex0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        capabilities=3f00<IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx>
        enabled=3f00<IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx>
        address: 00:10:4b:67:87:27
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 10.239.17.213 netmask 0xffff0000 broadcast 10.239.255.255
        inet6 fe80::210:4bff:fe67:8727%ex0 prefixlen 64 scopeid 0x1

it worked fine with -current 3 months old

Today either kernel crashes, or just network malfunctions
(even with capabilities turned off and untouched)

This is example of crash (they are always in rtflushall):

uvm_fault(0xccc7eee8, 0, 1) -> oxe
kernel: supervisor trap page fault, code=0
Stopped in pid xxx.1 (ifconfig) at netbsd:in_rtflushall+0x4e: movl 0x38(%edx),%eax


Second ex card seems to work fine:

ex1 at pci0 dev 12 function 0: 3Com 3c905-TX 10/100 Ethernet (rev. 0x0)
ex1: interrupting at ioapic0 pin 16 (irq 11)

# ifconfig ex1
ex1: flags=8a63<UP,BROADCAST,NOTRAILERS,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
        address: 00:60:98:ef:e3:5d
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 192.168.0.11 netmask 0xffffff00 broadcast 192.168.0.255
        inet6 fe80::260:98ff:feef:e35d%ex1 prefixlen 64 scopeid 0x2

However it is just statically configured, and I don't know whether it will work in more complex configurations.

>How-To-Repeat:
play with 3Com 3c905B-TX
>Fix:
N/A