NetBSD-Bugs archive

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

kern/51057: hme(4) device driver bug when tcp4csum and udp4csum are enabled



>Number:         51057
>Category:       kern
>Synopsis:       hme(4) device driver bug when tcp4csum and udp4csum are enabled
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Apr 09 09:50:00 +0000 2016
>Originator:     Roman
>Release:        7.0_STABLE
>Organization:
>Environment:
NetBSD ultra10 7.0_STABLE NetBSD 7.0_STABLE (GENERIC) #0: Sun Apr  3 17:13:43 BST 2016  roman@atom510:/opt/obj.sparc64/sys/arch/sparc64/compile/GENERIC sparc64
>Description:
All machines are on the same LAN, connected to a single
100Mbps switch. I run scp from NetBSD-7 on amd64 to NetBSD-7 on
sparc64, sooner or later sshd on sparc64 exits with error.

The way I manage to reproduce it:

1. Enable tcp4csum and udp4csum for hme0 on sparc64

2. Simulate heavy I/O on sparc64 by unpacking src.tgz which contains
pkgsrc, src and xsrc

3. Start scp for a 3GB file from amd64 to sparc64

Sooner or later sshd on sparc64 exists with error

Disabling tcp4csum and udp4csu for hme0 and repeating the above steps
always succeeds to scp the entire 3GB file without any errors.

So I'm inclined to think it's either hme0 hardware issue, or NetBSD
kernel bug.


ktrace shows the following:

   161      1 sshd     CALL  read(3,0xffffffffffff7310,0x4000)
   161      1 sshd     GIO   fd 3 read 56 bytes
       "QB\M-u\M-?J\M-V\^C\M-^\M-;i$\M^L\M-kWJ\^S\M-6\M^M\M-C\M-5;\M-u\M^OpV\^Z\M-o7\M-|\M-v8\M^G-dP\r\M^R\M-h7\M-15j\
        \M-)\^V)\M-UI\M-s\^Q\^E\M-S\^C\M^E?\M-02"
   161      1 sshd     RET   read 56/0x38
   161      1 sshd     CALL  __gettimeofday50(0xffffffffffff8710,0)
   161      1 sshd     RET   __gettimeofday50 0
   161      1 sshd     CALL  __sysctl(0xffffffffffff8608,2,0xffffffffffff99e0,0xffffffffffff8600,0,0)
   161      1 sshd     RET   __sysctl 0
   161      1 sshd     CALL  getpid
   161      1 sshd     RET   getpid 161/0xa1, 767/0x2ff
   161      1 sshd     CALL  __socket30(1,0x10000002,0)
   161      1 sshd     RET   __socket30 9
   161      1 sshd     CALL  connect(9,0xfffffffffca65218,0x6a)
   161      1 sshd     MISC  mbsoname: [/var/run/log]
   161      1 sshd     NAMI  "/var/run/log"
   161      1 sshd     RET   connect 0
   161      1 sshd     CALL  sendto(9,0xffffffffffff9048,0x53,0,0,0)
   161      1 sshd     MISC  msghdr: [name=0x0, namelen=0, iov=0x12d967b10, iovlen=1, control=0x0, controllen=0, flags=0]
   161      1 sshd     GIO   fd 9 wrote 83 bytes
       "<38>1 2016-04-07T15:28:58.973455+01:00 ultra10 sshd 161 - - Corrupted MAC on input."
   161      1 sshd     RET   sendto 83/0x53
   161      1 sshd     CALL  close(9)
   161      1 sshd     RET   close 0
   161      1 sshd     CALL  __gettimeofday50(0xffffffffffff89c0,0)
   161      1 sshd     RET   __gettimeofday50 0
   161      1 sshd     CALL  __sysctl(0xffffffffffff88b8,2,0xffffffffffff9c90,0xffffffffffff88b0,0,0)
   161      1 sshd     RET   __sysctl 0
   161      1 sshd     CALL  getpid
   161      1 sshd     RET   getpid 161/0xa1, 767/0x2ff
   161      1 sshd     CALL  __socket30(1,0x10000002,0)
   161      1 sshd     RET   __socket30 9
   161      1 sshd     CALL  connect(9,0xfffffffffca65218,0x6a)
   161      1 sshd     MISC  mbsoname: [/var/run/log]
   161      1 sshd     NAMI  "/var/run/log"
   161      1 sshd     RET   connect 0
   161      1 sshd     CALL  sendto(9,0xffffffffffff92f8,0x80,0,0,0)
   161      1 sshd     MISC  msghdr: [name=0x0, namelen=0, iov=0x12d967b10, iovlen=1, control=0x0, controllen=9, flags=0]
   161      1 sshd     GIO   fd 9 wrote 128 bytes
       "<34>1 2016-04-07T15:28:59.045004+01:00 ultra10 sshd 161 - - fatal: ssh_dispatch_run_fatal: message authenticat\
        ion code incorrect"
   161      1 sshd     RET   sendto 128/0x80
   161      1 sshd     CALL  close(9)
   161      1 sshd     RET   close 0


I assume that "Corrupted MAC on input" may have something to do with network card TCP checksumming

ultra10# cat /etc/ifconfig.hme0 
up
192.168.1.3 netmask 255.255.255.0 tcp4csum udp4csum

Others report similar issues:

https://tty1.net/blog/2014/ssh-corrupted-mac-on-input_en.html


>How-To-Repeat:

>Fix:



Home | Main Index | Thread Index | Old Index