NetBSD Problem Report #44742

From jailbird@fdf.net  Sat Mar 19 04:23:17 2011
Return-Path: <jailbird@fdf.net>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id 9E1EF63B100
	for <gnats-bugs@gnats.NetBSD.org>; Sat, 19 Mar 2011 04:23:17 +0000 (UTC)
Message-Id: <20110319042315.65E2B15C8024@bobdole.fdf.net>
Date: Sat, 19 Mar 2011 04:23:15 +0000 (UTC)
From: jailbird@fdf.net
Reply-To: jailbird@fdf.net
To: gnats-bugs@gnats.NetBSD.org
Subject: Remotely triggerable ECN panic in tcp_output() on current
X-Send-Pr-Version: 3.95

>Number:         44742
>Category:       kern
>Synopsis:       When ECN is enabled, panics can be remotely triggered
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Mar 19 04:25:00 +0000 2011
>Closed-Date:    Sat May 14 18:48:50 +0000 2011
>Last-Modified:  Sat May 14 18:48:50 +0000 2011
>Originator:     Dustin Marquess
>Release:        NetBSD 5.99.48 (also effects at least 5.99.47)
>Organization:
>Environment:
System: NetBSD bobdole.fdf.net 5.99.48 NetBSD 5.99.48 (BOBDOLE) #0: Sat Mar 19 03:18:47 UTC 2011 root@bobdole.fdf.net:/usr/src/sys/arch/amd64/compile/BOBDOLE amd64
Architecture: x86_64
Machine: amd64
>Description:
login: uvm_fault(0xffff80004d5b1018, 0x0, 2) -> e
fatal page fault in supervisor mode
trap type 6 code 2 rip ffffffff80358f4c cs 8 rflags 10246 cr2  91 cpl 4 rsp fff0
kernel: page fault trap, code=0
Stopped in pid 71.1 (ftpd) at   netbsd:tcp_output+0x1aef:       orb     $0x2,0x9
1(%rax)
db{1}> trace
tcp_output() at netbsd:tcp_output+0x1aef
tcp_usrreq() at netbsd:tcp_usrreq+0x179
tcp_usrreq_wrapper() at netbsd:tcp_usrreq_wrapper+-0x351b
sosend() at netbsd:sosend+0x497
soo_write() at netbsd:soo_write+0x2d
dofilewrite() at netbsd:dofilewrite+0x76
sys_write() at netbsd:sys_write+0x6e
syscall() at netbsd:syscall+0xaa

(gdb) info line *(tcp_output+0x1aef)
Line 1350 of "../../../../netinet/tcp_output.c"
   starts at address 0xffffffff80358f45 <tcp_output+6888>
      and ends at 0xffffffff80358f58 <tcp_output+6907>.

tcp_output.c:1350 is:
                                tp->t_inpcb->inp_ip.ip_tos |= IPTOS_ECN_ECT0;

>How-To-Repeat:
	Connect from an ECN capable host (in this case, Windows 7 x86 using
	FlashFXP).
>Fix:
	Disabling ECN stops the panic:
	sysctl -w net.inet.tcp.ecn.enable=0
	sysctl -w net.inet6.tcp6.ecn.enable=0

>Release-Note:

>Audit-Trail:
From: matthew green <mrg@eterna.com.au>
To: gnats-bugs@NetBSD.org, jailbird@fdf.net
Cc: kern-bug-people@netbsd.org, gnats-admin@netbsd.org,
    netbsd-bugs@netbsd.org
Subject: re: kern/44742: Remotely triggerable ECN panic in tcp_output() on current
Date: Tue, 22 Mar 2011 06:48:56 +1100

 please try this patch.  i noticed all other uses of
 tp->t_inpcb assume it may be NULL.


 Index: tcp_output.c
 ===================================================================
 RCS file: /cvsroot/src/sys/netinet/tcp_output.c,v
 retrieving revision 1.169
 diff -p -r1.169 tcp_output.c
 *** tcp_output.c	26 Jan 2010 18:09:08 -0000	1.169
 --- tcp_output.c	21 Mar 2011 19:47:02 -0000
 *************** send:
 *** 1347,1358 ****
   			switch (af) {
   #ifdef INET
   			case AF_INET:
 ! 				tp->t_inpcb->inp_ip.ip_tos |= IPTOS_ECN_ECT0;
   				break;
   #endif
   #ifdef INET6
   			case AF_INET6:
 ! 				ip6->ip6_flow |= htonl(IPTOS_ECN_ECT0 << 20);
   				break;
   #endif
   			}
 --- 1347,1362 ----
   			switch (af) {
   #ifdef INET
   			case AF_INET:
 ! 				if (tp->t_inpcb)
 ! 					tp->t_inpcb->inp_ip.ip_tos |=
 ! 					    IPTOS_ECN_ECT0;
   				break;
   #endif
   #ifdef INET6
   			case AF_INET6:
 ! 				if (ip6)
 ! 					ip6->ip6_flow |=
 ! 					    htonl(IPTOS_ECN_ECT0 << 20);
   				break;
   #endif
   			}

From: Matthew Mondor <mm_lists@pulsar-zone.net>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/44742: Remotely triggerable ECN panic in tcp_output() on
 current
Date: Mon, 21 Mar 2011 16:18:50 -0400

 On Mon, 21 Mar 2011 19:50:08 +0000 (UTC)
 matthew green <mrg@eterna.com.au> wrote:

 >  please try this patch.  i noticed all other uses of
 >  tp->t_inpcb assume it may be NULL.

 I just wanted to note that I checked and netbsd-5 appears to use the
 same code.

 Thanks,
 -- 
 Matt

From: "Matt Thomas" <matt@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44742 CVS commit: src/sys/netinet
Date: Mon, 21 Mar 2011 20:39:32 +0000

 Module Name:	src
 Committed By:	matt
 Date:		Mon Mar 21 20:39:32 UTC 2011

 Modified Files:
 	src/sys/netinet: tcp_output.c

 Log Message:
 Clean up setting ECN bit in TOS.  Fixes PR 44742


 To generate a diff of this commit:
 cvs rdiff -u -r1.169 -r1.170 src/sys/netinet/tcp_output.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: Dustin Marquess <dustin@fdf.net>
To: matthew green <mrg@eterna.com.au>
Cc: gnats-bugs@netbsd.org, kern-bug-people@netbsd.org, gnats-admin@netbsd.org, 
	netbsd-bugs@netbsd.org
Subject: Re: kern/44742: Remotely triggerable ECN panic in tcp_output() on current
Date: Wed, 23 Mar 2011 20:40:04 -0700

 VXBkYXRpbmcgdG8gdGhlIGxhdGVzdCBIRUFELCB3aGljaCBzZWVtcyB0byBoYXZlIGEgbW9kaWZp
 ZWQgdmVyc2lvbiBvZgp0aGlzIHBhdGNoLCBkb2VzIGluZGVlZCBmaXggdGhlIHByb2JsZW0hICBO
 byBtb3JlIGNyYXNoLCBhbmQgdGhlCmNvbm5lY3Rpb24gd29ya3MuCgpUaGFua3MhCi1EdXN0aW4K
 Ck9uIE1vbiwgTWFyIDIxLCAyMDExIGF0IDEyOjQ4IFBNLCBtYXR0aGV3IGdyZWVuIDxtcmdAZXRl
 cm5hLmNvbS5hdT4gd3JvdGU6Cj4KPiBwbGVhc2UgdHJ5IHRoaXMgcGF0Y2guIKBpIG5vdGljZWQg
 YWxsIG90aGVyIHVzZXMgb2YKPiB0cC0+dF9pbnBjYiBhc3N1bWUgaXQgbWF5IGJlIE5VTEwuCj4K
 Pgo+IEluZGV4OiB0Y3Bfb3V0cHV0LmMKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gUkNTIGZpbGU6IC9jdnNyb290
 L3NyYy9zeXMvbmV0aW5ldC90Y3Bfb3V0cHV0LmMsdgo+IHJldHJpZXZpbmcgcmV2aXNpb24gMS4x
 NjkKPiBkaWZmIC1wIC1yMS4xNjkgdGNwX291dHB1dC5jCj4gKioqIHRjcF9vdXRwdXQuYyCgIKAg
 oCCgMjYgSmFuIDIwMTAgMTg6MDk6MDggLTAwMDAgoCCgIKAxLjE2OQo+IC0tLSB0Y3Bfb3V0cHV0
 LmMgoCCgIKAgoDIxIE1hciAyMDExIDE5OjQ3OjAyIC0wMDAwCj4gKioqKioqKioqKioqKioqIHNl
 bmQ6Cj4gKioqIDEzNDcsMTM1OCAqKioqCj4goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBzd2l0Y2gg
 KGFmKSB7Cj4goCNpZmRlZiBJTkVUCj4goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBjYXNlIEFGX0lO
 RVQ6Cj4gISCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCB0cC0+dF9pbnBjYi0+aW5wX2lw
 LmlwX3RvcyB8PSBJUFRPU19FQ05fRUNUMDsKPiCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg
 oCCgYnJlYWs7Cj4goCNlbmRpZgo+IKAjaWZkZWYgSU5FVDYKPiCgIKAgoCCgIKAgoCCgIKAgoCCg
 IKAgoGNhc2UgQUZfSU5FVDY6Cj4gISCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBpcDYt
 PmlwNl9mbG93IHw9IGh0b25sKElQVE9TX0VDTl9FQ1QwIDw8IDIwKTsKPiCgIKAgoCCgIKAgoCCg
 IKAgoCCgIKAgoCCgIKAgoCCgYnJlYWs7Cj4goCNlbmRpZgo+IKAgoCCgIKAgoCCgIKAgoCCgIKAg
 oCCgfQo+IC0tLSAxMzQ3LDEzNjIgLS0tLQo+IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgc3dpdGNo
 IChhZikgewo+IKAjaWZkZWYgSU5FVAo+IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgY2FzZSBBRl9J
 TkVUOgo+ICEgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgaWYgKHRwLT50X2lucGNiKQo+
 ICEgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCB0cC0+dF9pbnBjYi0+aW5w
 X2lwLmlwX3RvcyB8PQo+ICEgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg
 IKAgSVBUT1NfRUNOX0VDVDA7Cj4goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoGJyZWFr
 Owo+IKAjZW5kaWYKPiCgI2lmZGVmIElORVQ2Cj4goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBjYXNl
 IEFGX0lORVQ2Ogo+ICEgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgaWYgKGlwNikKPiAh
 IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgaXA2LT5pcDZfZmxvdyB8PQo+
 ICEgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgaHRvbmwoSVBUT1Nf
 RUNOX0VDVDAgPDwgMjApOwo+IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKBicmVhazsK
 PiCgI2VuZGlmCj4goCCgIKAgoCCgIKAgoCCgIKAgoCCgIKB9Cj4K

From: "Jeff Rizzo" <riz@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44742 CVS commit: [netbsd-5] src/sys/netinet
Date: Tue, 29 Mar 2011 20:12:14 +0000

 Module Name:	src
 Committed By:	riz
 Date:		Tue Mar 29 20:12:14 UTC 2011

 Modified Files:
 	src/sys/netinet [netbsd-5]: tcp_output.c

 Log Message:
 Pull up following revision(s) (requested by spz in ticket #1586):
 	sys/netinet/tcp_output.c: revision 1.170
 Clean up setting ECN bit in TOS.  Fixes PR 44742


 To generate a diff of this commit:
 cvs rdiff -u -r1.167 -r1.167.10.1 src/sys/netinet/tcp_output.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Jeff Rizzo" <riz@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44742 CVS commit: [netbsd-5-1] src/sys/netinet
Date: Tue, 29 Mar 2011 20:13:04 +0000

 Module Name:	src
 Committed By:	riz
 Date:		Tue Mar 29 20:13:03 UTC 2011

 Modified Files:
 	src/sys/netinet [netbsd-5-1]: tcp_output.c

 Log Message:
 Pull up following revision(s) (requested by spz in ticket #1586):
 	sys/netinet/tcp_output.c: revision 1.170
 Clean up setting ECN bit in TOS.  Fixes PR 44742


 To generate a diff of this commit:
 cvs rdiff -u -r1.167 -r1.167.20.1 src/sys/netinet/tcp_output.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Jeff Rizzo" <riz@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44742 CVS commit: [netbsd-5-0] src/sys/netinet
Date: Tue, 29 Mar 2011 20:13:34 +0000

 Module Name:	src
 Committed By:	riz
 Date:		Tue Mar 29 20:13:34 UTC 2011

 Modified Files:
 	src/sys/netinet [netbsd-5-0]: tcp_output.c

 Log Message:
 Pull up following revision(s) (requested by spz in ticket #1586):
 	sys/netinet/tcp_output.c: revision 1.170
 Clean up setting ECN bit in TOS.  Fixes PR 44742


 To generate a diff of this commit:
 cvs rdiff -u -r1.167 -r1.167.16.1 src/sys/netinet/tcp_output.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Jeff Rizzo" <riz@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44742 CVS commit: [netbsd-4] src/sys/netinet
Date: Sun, 3 Apr 2011 15:05:14 +0000

 Module Name:	src
 Committed By:	riz
 Date:		Sun Apr  3 15:05:13 UTC 2011

 Modified Files:
 	src/sys/netinet [netbsd-4]: tcp_output.c

 Log Message:
 Pull up following revision(s) (requested by spz in ticket #1424):
 	sys/netinet/tcp_output.c: revision 1.170
 Clean up setting ECN bit in TOS.  Fixes PR 44742


 To generate a diff of this commit:
 cvs rdiff -u -r1.153.2.1 -r1.153.2.2 src/sys/netinet/tcp_output.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Jeff Rizzo" <riz@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/44742 CVS commit: [netbsd-4-0] src/sys/netinet
Date: Sun, 3 Apr 2011 15:06:15 +0000

 Module Name:	src
 Committed By:	riz
 Date:		Sun Apr  3 15:06:14 UTC 2011

 Modified Files:
 	src/sys/netinet [netbsd-4-0]: tcp_output.c

 Log Message:
 Pull up following revision(s) (requested by spz in ticket #1424):
 	sys/netinet/tcp_output.c: revision 1.170
 Clean up setting ECN bit in TOS.  Fixes PR 44742


 To generate a diff of this commit:
 cvs rdiff -u -r1.153.2.1 -r1.153.2.1.4.1 src/sys/netinet/tcp_output.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->closed
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Sat, 14 May 2011 18:48:50 +0000
State-Changed-Why:
Fixed and pulled up to all branches. Not sure if there's an advisory about
this, but those aren't tracked in gnats.


>Unformatted:
 	sys/netinet/tcp_output.c 1.169

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.