From owner-freebsd-current@freebsd.org Mon Aug 10 02:18:21 2015 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6661B998F1F for ; Mon, 10 Aug 2015 02:18:21 +0000 (UTC) (envelope-from pkelsey@gmail.com) Received: from mail-yk0-x233.google.com (mail-yk0-x233.google.com [IPv6:2607:f8b0:4002:c07::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3BC4B7B2; Mon, 10 Aug 2015 02:18:21 +0000 (UTC) (envelope-from pkelsey@gmail.com) Received: by ykdz80 with SMTP id z80so17528808ykd.2; Sun, 09 Aug 2015 19:18:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=y3+0t+9SRKDhVLgz06Ao4KhUorqxRJChdeL0RgxFjHA=; b=moTa+yy/WUaDHLiQAJKzdlsnAvWvLNo13KsX0imfC33Q1LCLd/QEygDaEuo5pORaIo +IbV+PLJOC5+pSAZvyCSu1CTYKOA/rgPTXZldL9BIzTdFAqFN1gcEgf6AatGYHIuQbZ8 jzCP9Wc/bBDFirpfcYjS56KHmANZjBV/R+QVLNH5vhX3+ltWloff/E0mPyZR6KesEo5X MgZO8xF9Mlgc+XDe5eeSp0/b8KvxsAJrfwjiOfsxvge7xh2tnzmrJ3Dpkxa9qJv9og3v PIDmvqyBw1x7yQ2NvL/TweoCj4t+FJCrRl3WScamt0IFVNyw7zluETnDgD7fJq/MgHh0 rbtg== MIME-Version: 1.0 X-Received: by 10.129.42.132 with SMTP id q126mr19476735ywq.105.1439173100310; Sun, 09 Aug 2015 19:18:20 -0700 (PDT) Sender: pkelsey@gmail.com Received: by 10.13.235.87 with HTTP; Sun, 9 Aug 2015 19:18:20 -0700 (PDT) In-Reply-To: <20150809103635.GA889@glebius.int.ru> References: <20150809103635.GA889@glebius.int.ru> Date: Sun, 9 Aug 2015 22:18:20 -0400 X-Google-Sender-Auth: 4xelpXxoHnWCY052JqMRZNIo6vw Message-ID: Subject: Re: sysctl -a panic on VIMAGE kernels From: Patrick Kelsey To: Gleb Smirnoff Cc: Kristof Provost , freebsd-current Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2015 02:18:21 -0000 On Sun, Aug 9, 2015 at 6:36 AM, Gleb Smirnoff wrote: > On Sun, Aug 09, 2015 at 12:28:22PM +0200, Kristof Provost wrote: > K> Hi, > K> > K> I=E2=80=99ve run into a reproducible panic on a VIMAGE kernel with =E2= =80=98sysctl -a=E2=80=99. > K> > K> Relevant backtrace bits: > K> #8 0xffffffff80e7dd28 in trap (frame=3D0xfffffe01f16b26a0) > K> at /usr/src/sys/amd64/amd64/trap.c:426 > K> #9 0xffffffff80e5e6a2 in calltrap () > K> at /usr/src/sys/amd64/amd64/exception.S:235 > K> #10 0xffffffff80cea67d in uma_zone_get_cur (zone=3D0x0) > K> at /usr/src/sys/vm/uma_core.c:3006 > K> #11 0xffffffff80cec029 in sysctl_handle_uma_zone_cur ( > K> oidp=3D0xffffffff818a7c90, arg1=3D0xfffffe00010c0438, arg2=3D0, > K> req=3D0xfffffe01f16b2868) at /usr/src/sys/vm/uma_core.c:3580 > K> #12 0xffffffff80a28614 in sysctl_root_handler_locked > (oid=3D0xffffffff818a7c90, > K> arg1=3D0xfffffe00010c0438, arg2=3D0, req=3D0xfffffe01f16b2868) > K> at /usr/src/sys/kern/kern_sysctl.c:183 > K> #13 0xffffffff80a27d70 in sysctl_root (arg1=3D, > K> arg2=3D) at /usr/src/sys/kern/kern_sysctl.c:1= 694 > K> #14 0xffffffff80a28372 in userland_sysctl (td=3D0x0, > name=3D0xfffffe01f16b2930, > K> namelen=3D, old=3D, > K> oldlenp=3D, inkernel=3D, > K> new=3D, newlen=3D, > K> retval=3D, flags=3D0) > K> at /usr/src/sys/kern/kern_sysctl.c:1798 > K> #15 0xffffffff80a28144 in sys___sysctl (td=3D0xfffff8000b1e49a0, > K> uap=3D0xfffffe01f16b2a40) at /usr/src/sys/kern/kern_sysctl.c:1724 > K> > K> In essence, what happens is that we end up in > sysctl_handle_uma_zone_cur() and arg1 is a pointer to NULL, > K> so we call uma_zone_get_cur(zone); with zone =3D=3D NULL. > K> > K> There=E2=80=99s been a bit of churn around tcp_reass_zone, and I think= the > latest version is wrong. > K> It marks the sysctl as CTLFLAG_VNET, but the exposed variable is not > VNET_DEFINE(). > K> > K> The following fixes it for me: > K> > K> diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c > K> index 77d8940..3913ef3 100644 > K> --- a/sys/netinet/tcp_reass.c > K> +++ b/sys/netinet/tcp_reass.c > K> @@ -84,7 +84,7 @@ SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, > maxsegments, CTLFLAG_RDTUN, > K> "Global maximum number of TCP Segments in Reassembly Queue"); > K> > K> static uma_zone_t tcp_reass_zone; > K> -SYSCTL_UMA_CUR(_net_inet_tcp_reass, OID_AUTO, cursegments, > CTLFLAG_VNET, > K> +SYSCTL_UMA_CUR(_net_inet_tcp_reass, OID_AUTO, cursegments, 0, > K> &tcp_reass_zone, > K> "Global number of TCP Segments currently in Reassembly Queue=E2= =80=9D); > > Right, if a variable isn't virtualized, the CTLFLAG_VNET must be removed. > > Patrick, how is your progress wuth improved reassembly? > Kristof, thanks for committing this patch. Gleb, I expect to have a tcp reassembly patch up for review at some point this week. -Patrick