Date: Tue, 03 Sep 2019 14:08:13 -0000 From: "Kristof Provost" <kp@FreeBSD.org> To: "Enji Cooper" <yaneurabeya@gmail.com> Cc: "Hans Petter Selasky" <hps@selasky.org>, src-committers <src-committers@freebsd.org>, svn-src-all <svn-src-all@freebsd.org>, svn-src-head <svn-src-head@freebsd.org>, "FreeBSD CURRENT" <freebsd-current@freebsd.org> Subject: Re: Panic with r346530 [Re: svn commit: r346530 - in head/sys: netinet netinet6] Message-ID: <1342BBD2-EE0F-4457-8752-659EA7F01725@FreeBSD.org> In-Reply-To: <8EAC0CFE-E22F-478F-813F-A07E68C0518D@gmail.com> References: <201904220727.x3M7ROpR009729@repo.freebsd.org> <2F3D6B17-AF4F-4B0F-B20E-5EF41DE851F9@gmail.com> <87917500-0381-79d8-a34b-819848abed32@selasky.org> <f2567fc6-fd5b-67c9-a994-5a48d65d1278@selasky.org> <8EAC0CFE-E22F-478F-813F-A07E68C0518D@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 22 Apr 2019, at 12:25, Enji Cooper wrote:
> Either the sys/netinet/ or sys/netipsec/ tests triggered the panic.
> Not sure which right now.
>
That looks to be happening during a vnet jail teardown, so it’s likely
the sys/netipsec or sys/netpfil/pf tests.
I’ve done a quick test with the pf tests, and they provoke this panic:
panic: mtx_lock() of destroyed mutex @
/usr/src/sys/netinet/ip_reass.c:628
cpuid = 0
time = 1555939645
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame
0xfffffe0091d68530
vpanic() at vpanic+0x19d/frame 0xfffffe0091d68580
panic() at panic+0x43/frame 0xfffffe0091d685e0
__mtx_lock_flags() at __mtx_lock_flags+0x12e/frame 0xfffffe0091d68630
ipreass_cleanup() at ipreass_cleanup+0x86/frame 0xfffffe0091d68670
if_detach_internal() at if_detach_internal+0x786/frame
0xfffffe0091d686f0
if_detach() at if_detach+0x3d/frame 0xfffffe0091d68710
lo_clone_destroy() at lo_clone_destroy+0x16/frame 0xfffffe0091d68730
if_clone_destroyif() at if_clone_destroyif+0x21f/frame
0xfffffe0091d68780
if_clone_detach() at if_clone_detach+0xb8/frame 0xfffffe0091d687b0
vnet_loif_uninit() at vnet_loif_uninit+0x26/frame 0xfffffe0091d687d0
vnet_destroy() at vnet_destroy+0x124/frame 0xfffffe0091d68800
prison_deref() at prison_deref+0x29d/frame 0xfffffe0091d68840
sys_jail_remove() at sys_jail_remove+0x28f/frame 0xfffffe0091d68890
amd64_syscall() at amd64_syscall+0x276/frame 0xfffffe0091d689b0
fast_syscall_common() at fast_syscall_common+0x101/frame
0xfffffe0091d689b0
--- syscall (508, FreeBSD ELF64, sys_jail_remove), rip = 0x80031e12a,
rsp = 0x7fffffffe848, rbp = 0x7fffffffe8d0 ---
KDB: enter: panic
[ thread pid 1223 tid 100501 ]
Stopped at kdb_enter+0x3b: movq $0,kdb_why
db>
To reproduce:
kldload pfsync
cd /usr/tests/sys/netpfil/pf
sudo kyua test
Regards,
Kristof
From owner-svn-src-all@freebsd.org Tue Sep 3 14:08:10 2019
Return-Path: <owner-svn-src-all@freebsd.org>
Delivered-To: svn-src-all@mailman.nyi.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
by mailman.nyi.freebsd.org (Postfix) with ESMTP id 74C57DD7AD;
Tue, 3 Sep 2019 14:07:16 +0000 (UTC)
(envelope-from yuripv@freebsd.org)
Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
server-signature RSA-PSS (4096 bits)
client-signature RSA-PSS (4096 bits) client-digest SHA256)
(Client CN "freefall.freebsd.org",
Issuer "Let's Encrypt Authority X3" (verified OK))
by mx1.freebsd.org (Postfix) with ESMTPS id 46N80M55yrz4QQt;
Tue, 3 Sep 2019 14:07:15 +0000 (UTC)
(envelope-from yuripv@freebsd.org)
Received: by freefall.freebsd.org (Postfix, from userid 1452)
id E9BC61B375; Tue, 3 Sep 2019 14:06:33 +0000 (UTC)
X-Original-To: yuripv@localmail.freebsd.org
Delivered-To: yuripv@localmail.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
(Client CN "mx1.freebsd.org",
Issuer "Let's Encrypt Authority X3" (verified OK))
by freefall.freebsd.org (Postfix) with ESMTPS id 57F77274B;
Sun, 21 Apr 2019 20:46:54 +0000 (UTC)
(envelope-from owner-src-committers@freebsd.org)
Received: from freefall.freebsd.org (freefall.freebsd.org
[IPv6:2610:1c1:1:6074::16:84])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
server-signature RSA-PSS (4096 bits)
client-signature RSA-PSS (4096 bits) client-digest SHA256)
(Client CN "freefall.freebsd.org",
Issuer "Let's Encrypt Authority X3" (verified OK))
by mx1.freebsd.org (Postfix) with ESMTPS id 7719789255;
Sun, 21 Apr 2019 20:46:53 +0000 (UTC)
(envelope-from owner-src-committers@freebsd.org)
Received: by freefall.freebsd.org (Postfix, from userid 538)
id 199D926E0; Sun, 21 Apr 2019 20:46:53 +0000 (UTC)
Delivered-To: src-committers@localmail.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
(Client CN "mx1.freebsd.org",
Issuer "Let's Encrypt Authority X3" (verified OK))
by freefall.freebsd.org (Postfix) with ESMTPS id 98CCB26DE
for <src-committers@localmail.freebsd.org>;
Sun, 21 Apr 2019 20:46:50 +0000 (UTC) (envelope-from ian@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
[IPv6:2610:1c1:1:606c::19:3])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
server-signature RSA-PSS (4096 bits)
client-signature RSA-PSS (4096 bits) client-digest SHA256)
(Client CN "mxrelay.nyi.freebsd.org",
Issuer "Let's Encrypt Authority X3" (verified OK))
by mx1.freebsd.org (Postfix) with ESMTPS id 5E6F68924F;
Sun, 21 Apr 2019 20:46:50 +0000 (UTC) (envelope-from ian@FreeBSD.org)
Received: from repo.freebsd.org (repo.freebsd.org
[IPv6:2610:1c1:1:6068::e6a:0])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(Client did not present a certificate)
by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4E0332A8E;
Sun, 21 Apr 2019 20:46:50 +0000 (UTC) (envelope-from ian@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x3LKkohg072637;
Sun, 21 Apr 2019 20:46:50 GMT (envelope-from ian@FreeBSD.org)
Received: (from ian@localhost)
by repo.freebsd.org (8.15.2/8.15.2/Submit) id x3LKko65072636;
Sun, 21 Apr 2019 20:46:50 GMT (envelope-from ian@FreeBSD.org)
Message-Id: <201904212046.x3LKko65072636@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: ian set sender to ian@FreeBSD.org
using -f
From: Ian Lepore <ian@FreeBSD.org>
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject: svn commit: r346497 - stable/12/stand/uboot/common
X-SVN-Group: stable-12
X-SVN-Commit-Author: ian
X-SVN-Commit-Paths: stable/12/stand/uboot/common
X-SVN-Commit-Revision: 346497
X-SVN-Commit-Repository: base
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Precedence: bulk
X-Loop: FreeBSD.org
Sender: owner-src-committers@freebsd.org
X-Rspamd-Queue-Id: 7719789255
X-Spamd-Bar: --
Authentication-Results: mx1.freebsd.org
X-Spamd-Result: default: False [-2.97 / 15.00];
local_wl_from(0.00)[freebsd.org];
NEURAL_HAM_MEDIUM(-1.00)[-1.000,0];
NEURAL_HAM_SHORT(-0.97)[-0.973,0];
ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US];
NEURAL_HAM_LONG(-1.00)[-1.000,0]
Status: O
X-BeenThere: svn-src-all@freebsd.org
X-Mailman-Version: 2.1.29
List-Id: "SVN commit messages for the entire src tree \(except for "
user" and " projects" \)" <svn-src-all.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-all>,
<mailto:svn-src-all-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-all/>
List-Post: <mailto:svn-src-all@freebsd.org>
List-Help: <mailto:svn-src-all-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-all>,
<mailto:svn-src-all-request@freebsd.org?subject=subscribe>
Date: Tue, 03 Sep 2019 14:08:10 -0000
X-Original-Date: Sun, 21 Apr 2019 20:46:50 +0000 (UTC)
X-List-Received-Date: Tue, 03 Sep 2019 14:08:10 -0000
Author: ian
Date: Sun Apr 21 20:46:49 2019
New Revision: 346497
URL: https://svnweb.freebsd.org/changeset/base/346497
Log:
MFC r344260, r344335
r344260:
Allow the u-boot loaderdev env var to be formatted in the "usual" loader(8)
way: device<unit>[s|p]<slice><partition>. E.g., disk0s2a or disk3p12.
The code first tries to parse the variable in this format using the
standard disk_parsedev(). If that fails, it falls back to parsing the
legacy format that has been supported by ubldr for years.
In addition to 'disk', all the valid uboot device names can also be used:
mmc, sata, usb, ide, scsi. The 'disk' device serves as an alias for all
those types and will match the Nth storage-type device found (where N is
the unit number).
r344335:
Fix the handling of legacy-format devices in the u-boot loaderdev variable.
When I added support for the standard loader(8) disk0s2a: type formats,
the parsing of legacy format was broken because it also contains a colon,
but it comes before the slice and partition. That would cause disk_parsedev()
to return success with the slice and partition set to wildcard values.
This change examines the string first, and if it contains spaces, dots, or
a colon at any position other than the end, it must be a legacy-format
string and we don't even try to use disk_parsedev() on it.
Modified:
stable/12/stand/uboot/common/main.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/stand/uboot/common/main.c
==============================================================================
--- stable/12/stand/uboot/common/main.c Sun Apr 21 20:40:49 2019 (r346496)
+++ stable/12/stand/uboot/common/main.c Sun Apr 21 20:46:49 2019 (r346497)
@@ -182,6 +182,14 @@ device_typename(int type)
* The returned values for slice and partition are interpreted by
* disk_open().
*
+ * The device string can be a standard loader(8) disk specifier:
+ *
+ * disk<unit>s<slice> disk0s1
+ * disk<unit>s<slice><partition> disk1s2a
+ * disk<unit>p<partition> disk0p4
+ *
+ * or one of the following formats:
+ *
* Valid device strings: For device types:
*
* <type_name> DEV_TYP_STOR, DEV_TYP_NET
@@ -198,6 +206,7 @@ device_typename(int type)
static void
get_load_device(int *type, int *unit, int *slice, int *partition)
{
+ struct disk_devdesc dev;
char *devstr;
const char *p;
char *endp;
@@ -215,6 +224,26 @@ get_load_device(int *type, int *unit, int *slice, int
printf("U-Boot env: loaderdev='%s'\n", devstr);
p = get_device_type(devstr, type);
+
+ /*
+ * If type is DEV_TYP_STOR we have a disk-like device. If the remainder
+ * of the string contains spaces, dots, or a colon in any location other
+ * than the last char, it's legacy format. Otherwise it might be
+ * standard loader(8) format (e.g., disk0s2a or mmc1p12), so try to
+ * parse the remainder of the string as such, and if it works, return
+ * those results. Otherwise we'll fall through to the code that parses
+ * the legacy format.
+ */
+ if (*type & DEV_TYP_STOR) {
+ size_t len = strlen(p);
+ if (strcspn(p, " .") == len && strcspn(p, ":") >= len - 1 &&
+ disk_parsedev(&dev, p, NULL) == 0) {
+ *unit = dev.dd.d_unit;
+ *slice = dev.d_slice;
+ *partition = dev.d_partition;
+ return;
+ }
+ }
/* Ignore optional spaces after the device name. */
while (*p == ' ')
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1342BBD2-EE0F-4457-8752-659EA7F01725>
