From owner-freebsd-net@FreeBSD.ORG Fri Apr 24 18:12:01 2015 Return-Path: Delivered-To: freebsd-net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 19F39E45 for ; Fri, 24 Apr 2015 18:12:01 +0000 (UTC) Received: from gold.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "gold.funkthat.com", Issuer "gold.funkthat.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id E282B1F51 for ; Fri, 24 Apr 2015 18:12:00 +0000 (UTC) Received: from gold.funkthat.com (localhost [127.0.0.1]) by gold.funkthat.com (8.14.5/8.14.5) with ESMTP id t3OIBwZS016362 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 24 Apr 2015 11:11:58 -0700 (PDT) (envelope-from jmg@gold.funkthat.com) Received: (from jmg@localhost) by gold.funkthat.com (8.14.5/8.14.5/Submit) id t3OIBw47016361; Fri, 24 Apr 2015 11:11:58 -0700 (PDT) (envelope-from jmg) Date: Fri, 24 Apr 2015 11:11:58 -0700 From: John-Mark Gurney To: freebsd-net@FreeBSD.org, Poul-Henning Kamp Subject: should m_copyback possibly throw data away? Message-ID: <20150424181158.GJ37063@funkthat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Operating-System: FreeBSD 9.1-PRERELEASE amd64 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (gold.funkthat.com [127.0.0.1]); Fri, 24 Apr 2015 11:11:59 -0700 (PDT) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Apr 2015 18:12:01 -0000 I was reviewing m_copyback from some other code, and noticed that it does this: if (m0 == NULL) return; at the beginin... If you pass in a NULL mbuf, it will not copy any data in.. This is clearly to avoid panics, but at the same time, this means we'll have data loss... If someone tried to copy into a NULL mbuf, it's likely a bug, and papering over that bug doesn't seem wise... I'd like to see that removed (or changed to a KASSERT), but as it's been in there since 1994: https://svnweb.freebsd.org/base/head/sys/kern/uipc_mbuf.c?r1=3351&r2=3352 That's a pretty fundamental change... mbuf(9) does not document this behavior that data may be thrown away... I would also be fine w/ documenting this behavior, though I'm sure it'd be surprising to many that you'd have to check to make sure your data was properly copied. -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."