From owner-svn-src-all@FreeBSD.ORG Mon Jun 22 22:11:11 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BAE39106564A; Mon, 22 Jun 2009 22:11:11 +0000 (UTC) (envelope-from mat.macy@gmail.com) Received: from mail-yx0-f200.google.com (mail-yx0-f200.google.com [209.85.210.200]) by mx1.freebsd.org (Postfix) with ESMTP id A5A688FC12; Mon, 22 Jun 2009 22:11:07 +0000 (UTC) (envelope-from mat.macy@gmail.com) Received: by yxe38 with SMTP id 38so2531873yxe.3 for ; Mon, 22 Jun 2009 15:11:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to:cc :content-type:content-transfer-encoding; bh=hxtO4GBJsKX6g2tNNXz2FoHCD8UN1+rZj1ukLcVKdmI=; b=NE3+zR47sIx68oqDGlSyIArGHR2cr1BUlpjGyIgWJ0kgD9amlyjWbwOoXVlL6FAdiX zeHLsItZR//punQ3dbj8qTmxm7CVR+yd28k9WxBQ4DqniTHI7taz6Ifi2uxG/iEAkcXH U/nZ+P9i5JtaeSIxdCcQZ5k1k4NL5hCfWWXK4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=SL2Lo6jchPW0YvzQBVUe/WM3kjW1Bua8OWzCALXa2W20Q2uDfm/UVfPP5POMLCO3Oj nn64nfDQmutlWgdYJ4gfNbVHpx95q0W/w2ZNI3S1H1+8SfZgyCEQVLZmrg7J3K/jX3xU 9qrRTlHF1RjlzxB6x5O/YqaX8BXtk4E6L5xS0= MIME-Version: 1.0 Sender: mat.macy@gmail.com Received: by 10.100.195.15 with SMTP id s15mr8750486anf.18.1245708657554; Mon, 22 Jun 2009 15:10:57 -0700 (PDT) In-Reply-To: <200906221935.n5MJZdLJ050266@svn.freebsd.org> References: <200906221935.n5MJZdLJ050266@svn.freebsd.org> Date: Mon, 22 Jun 2009 15:10:57 -0700 X-Google-Sender-Auth: 04c869c0f1c0201b Message-ID: <3c1674c90906221510s9b62e25w3a5d41c21bd512e1@mail.gmail.com> From: Kip Macy To: Andre Oppermann Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Sam Leffler Subject: Re: svn commit: r194643 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Jun 2009 22:11:12 -0000 On Mon, Jun 22, 2009 at 12:35 PM, Andre Oppermann wrote: > Author: andre > Date: Mon Jun 22 19:35:39 2009 > New Revision: 194643 > URL: http://svn.freebsd.org/changeset/base/194643 > > Log: > =A0Update m_demote: > =A0- remove HT_HEADER test (MT_HEADER =3D=3D MT_DATA for some time now) > =A0- be more pedantic about m_nextpkt in other than first mbuf > =A0- update m_flags to be retained > > Modified: > =A0head/sys/kern/uipc_mbuf.c > > Modified: head/sys/kern/uipc_mbuf.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/kern/uipc_mbuf.c =A0 Mon Jun 22 19:09:48 2009 =A0 =A0 =A0 = =A0(r194642) > +++ head/sys/kern/uipc_mbuf.c =A0 Mon Jun 22 19:35:39 2009 =A0 =A0 =A0 = =A0(r194643) > @@ -320,11 +320,13 @@ m_demote(struct mbuf *m0, int all) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0m->m_flags &=3D ~M_PKTHDR; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bzero(&m->m_pkthdr, sizeof= (struct pkthdr)); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (m->m_type =3D=3D MT_HEADER) > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 m->m_type =3D MT_DATA; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (m !=3D m0 && m->m_nextpkt !=3D NULL) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (m !=3D m0 && m->m_nextpkt !=3D NULL) { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 KASSERT(m->m_nextpkt =3D=3D= NULL, > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ("%s: m_nextpkt not= NULL", __func__)); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 m_freem(m->m_nextpkt); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0m->m_nextpkt =3D NULL; > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 m->m_flags =3D m->m_flags & (M_EXT|M_EOR|M_= RDONLY|M_FREELIST); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 m->m_flags =3D m->m_flags & (M_EXT|M_RDONLY= |M_FREELIST|M_NOFREE); > =A0 =A0 =A0 =A0} > Freeing an mbuf that shouldn't be there is not a safe change. You don't know that m_nextpkt isn't pointing at some random value in memory and that doing so isn't going to lead to some inexplicable crash some time later. This is not a good strategy from a support standpoint. I've cc'd sam in case he feels differently. Cheers, Kip