NetBSD Problem Report #30057

From nathanw@marvin-the-martian.nathanw.com  Mon Apr 25 16:24:32 2005
Return-Path: <nathanw@marvin-the-martian.nathanw.com>
Received: from marvin-the-martian.nathanw.com (hmsputnam.hsd1.ma.comcast.net [24.60.191.196])
	by narn.netbsd.org (Postfix) with ESMTP id 77DD363B116
	for <gnats-bugs@gnats.NetBSD.org>; Mon, 25 Apr 2005 16:24:31 +0000 (UTC)
Message-Id: <200504251624.j3PGO76m022680@marvin-the-martian.nathanw.com>
Date: Mon, 25 Apr 2005 12:24:07 -0400 (EDT)
From: nathanw@wasabisystems.com
Reply-To: nathanw@wasabisystems.com
To: gnats-bugs@netbsd.org
Subject: FAST_IPSEC, large MTU, and strict alignment don't get along
X-Send-Pr-Version: 3.95

>Number:         30057
>Category:       kern
>Synopsis:       FAST_IPSEC, large MTU, and strict alignment don't get along
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 25 16:25:00 +0000 2005
>Originator:     Nathan J. Williams
>Release:        NetBSD 3.99.3 (2004-04-10)
>Organization:

>Environment:
System: NetBSD mac-g4.nathanw.com 3.99.3 NetBSD 3.99.3 (G4) #84: Mon Apr 25 09:59:58 EDT 2005 nathanw@marvin-the-martian.nathanw.com:/nbsd/src/sys/arch/macppc/compile/G4 macppc

Architecture: powerpc
Machine: macppc
>Description:
Configuring a kernel with FAST_IPSEC, setting up ESP and AH with manual keys, increasing the MTU from the default and running nttcp (from pkgsrc) against another host results in a panic in tcp_input.c:

panic: kernel diagnostic assertion "TCP_HDR_ALIGNED_P(th)" failed: file "../../../../netinet/tcp_input.c", line 1035
Stopped in pid 2.1 (cryptoret) at       netbsd:cpu_Debugger+0x18:       lwz    \
 r
11, r1, 0x0
db> t
0xd5243b50: at panic+0x174
0xd5243bf0: at __assert+0x3c
0xd5243c20: at tcp_input+0x22e8
0xd5243d80: at ip_input+0x640
0xd5243dd0: at ipintr+0x80
0xd5243e00: at softintr__run+0xa8
0xd5243e20: at do_pending_int+0x1ec
0xd5243e60: at splx+0x40
0xd5243e70: at esp_input_cb+0x420
0xd5243ef0: at cryptoret+0x188
0xd5243f40: at cpu_switchto+0x44
0xd5243f50: at ADBDevTable+0xffb49c08
db>

With the KASSERT() at line 1035 replaced with a test-and-panic like so:

	if (!TCP_HDR_ALIGNED_P(th))
		panic("tcp_input: th is not aligned (%p)\n", th);

the panic is
panic: tcp_input: th is not aligned (0xba86052)

so the pointer is 2-byte-aligned but not 4-byte-aligned.

The network interface probes as:
wm0 at pci1 dev 4 function 0: Intel i82545GM 1000BASE-T Ethernet, rev. 4
wm0: interrupting at irq 25
wm0: Ethernet address 00:04:23:b2:30:90
makphy0 at wm0 phy 1: Marvell 88E1011 Gigabit PHY, rev. 5
makphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-F\
DX, auto

and is configured as:
# ifconfig wm0
wm0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 3000
        capabilities=87<IP4CSUM,TCP4CSUM,UDP4CSUM,TSO4>
        enabled=0
        address: 00:04:23:b2:30:90
        media: Ethernet autoselect (1000baseT full-duplex,flowcontrol,rxpause,t\
xpause)
        status: active
        inet 10.1.0.15 netmask 0xffffff00 broadcast 10.1.0.255

The /etc/ipsec.conf contents, fed to setkey -c:

add 10.1.0.15 10.1.0.5 esp 1234 -E rijndael-cbc 0x79d06d135aadaba411ee0663fbcf9\
69bc0137e91b0677e39;
add 10.1.0.5 10.1.0.15 esp 1235 -E rijndael-cbc 0x92a933b4621cd5599d53834bdf301\
2d22cf460f8589f7166;
spdadd 10.1.0.15 10.1.0.5 any -P out ipsec esp/transport//use;

(I first noticed this problem with ESP and AH, but just ESP seems to
be sufficent)

>How-To-Repeat:

See above.

>Fix:
Unknown

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.