NetBSD Problem Report #56160
From www@netbsd.org Sun May 9 13:04:11 2021
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id D56911A9266
for <gnats-bugs@gnats.NetBSD.org>; Sun, 9 May 2021 13:04:11 +0000 (UTC)
Message-Id: <20210509130410.87DBC1A9267@mollari.NetBSD.org>
Date: Sun, 9 May 2021 13:04:10 +0000 (UTC)
From: osvaldo.frassine@disroot.org
Reply-To: osvaldo.frassine@disroot.org
To: gnats-bugs@NetBSD.org
Subject: Mount ntfs usb disk
X-Send-Pr-Version: www-1.0
>Number: 56160
>Category: kern
>Synopsis: Mount ntfs usb disk
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: hannken
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun May 09 13:05:01 +0000 2021
>Closed-Date: Mon May 17 16:34:18 +0000 2021
>Last-Modified: Mon May 17 16:34:18 +0000 2021
>Originator: Osvaldo Frassine
>Release: NetBSD 9.1_STABLE (GENERIC) #0: Mon Apr 26 18:36:07 UTC 2021
>Organization:
>Environment:
NetBSD lancelot.local 9.1_STABLE NetBSD 9.1_STABLE (GENERIC) #0: Mon Apr 26 18:36:07 UTC 2021 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC amd64
>Description:
Error log: https://pastebin.com/8tn0puwa
>How-To-Repeat:
I did:
mount -t ntfs /dev/sd0e /mnt/usb1
>Fix:
>Release-Note:
>Audit-Trail:
From: Paul Goyette <paul@whooppee.com>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/56160: Mount ntfs usb disk
Date: Sun, 9 May 2021 07:29:35 -0700 (PDT)
Here's the real stuff from pastebin.com:
May 9 10:33:37 lancelot /netbsd: [ 2517.9478616] umass0 at uhub1 port 1 configuration 1 interface 0
May 9 10:33:37 lancelot /netbsd: [ 2517.9478616] umass0: Western Digital (0x1058) Ext HDD 1021 (0x1021), rev 2.00/20.02, addr 1
May 9 10:33:37 lancelot /netbsd: [ 2517.9478616] umass0: using SCSI over Bulk-Only
May 9 10:33:37 lancelot /netbsd: [ 2517.9478616] scsibus0 at umass0: 2 targets, 1 lun per target
May 9 10:33:37 lancelot /netbsd: [ 2517.9478616] sd0 at scsibus0 target 0 lun 0: <WD, Ext HDD 1021, 2002> disk fixed
May 9 10:33:37 lancelot /netbsd: [ 2517.9578670] sd0: fabricating a geometry
May 9 10:33:37 lancelot /netbsd: [ 2517.9578670] sd0: 1863 GB, 1907727 cyl, 64 head, 32 sec, 512 bytes/sect x 3907024896 sectors
May 9 10:36:23 lancelot syslogd[229]: restart
May 9 10:36:23 lancelot /netbsd: [ 2517.9778754] sd0: fabricating a geometry
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] uvm_fault(0xffff926abe4792e0, 0x0, 1) -> e
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] fatal page fault in supervisor mode
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] trap type 6 code 0 rip 0xffffffff80869d91 cs 0x8 rflags 0x10206 cr2 0xc0 ilevel 0 rsp 0xffffaf80995628e0
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] curlwp 0xffff926acd754a60 pid 7613.1 lowest kstack 0xffffaf80995602c0
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] panic: trap
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] cpu3: Begin traceback...
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] vpanic() at netbsd:vpanic+0x160
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] snprintf() at netbsd:snprintf
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] startlwp() at netbsd:startlwp
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] alltraps() at netbsd:alltraps+0xbb
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] ntfs_findvattr() at netbsd:ntfs_findvattr+0xc8
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] ntfs_ntvattrget() at netbsd:ntfs_ntvattrget+0x266
May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] ntfs_loadvnode() at netbsd:ntfs_loadvnode+0xba
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] vcache_get() at netbsd:vcache_get+0x1ef
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] ntfs_vgetex() at netbsd:ntfs_vgetex+0x7a
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] ntfs_mountfs() at netbsd:ntfs_mountfs+0x238
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] ntfs_mount() at netbsd:ntfs_mount+0x1ce
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] VFS_MOUNT() at netbsd:VFS_MOUNT+0x4d
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] mount_domount() at netbsd:mount_domount+0xdf
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] do_sys_mount() at netbsd:do_sys_mount+0x580
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] sys___mount50() at netbsd:sys___mount50+0x33
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] syscall() at netbsd:syscall+0x157
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] --- syscall (number 410) ---
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] 74d1c5c87b7a:
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] cpu3: End traceback...
May 9 10:36:23 lancelot /netbsd:
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] dumping to dev 0,1 (offset=1535, size=1733952):
May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] dump [ 1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
May 9 10:36:23 lancelot /netbsd: [ 1.0000000] 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
May 9 10:36:23 lancelot /netbsd: [ 1.0000000] 2018, 2019, 2020 The NetBSD Foundation, Inc. All rights reserved.
May 9 10:36:23 lancelot /netbsd: [ 1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
May 9 10:36:23 lancelot /netbsd: [ 1.0000000] The Regents of the University of California. All rights reserved.
May 9 10:36:23 lancelot /netbsd:
May 9 10:36:23 lancelot /netbsd: [ 1.0000000] NetBSD 9.1_STABLE (GENERIC) #0: Mon Apr 26 18:36:07 UTC 2021
+--------------------+--------------------------+-----------------------+
| Paul Goyette | PGP Key fingerprint: | E-mail addresses: |
| (Retired) | FA29 0E3B 35AF E8AE 6651 | paul@whooppee.com |
| Software Developer | 0786 F758 55DE 53BA 7731 | pgoyette@netbsd.org |
+--------------------+--------------------------+-----------------------+
From: mlelstv@serpens.de (Michael van Elst)
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/56160: Mount ntfs usb disk
Date: Sun, 9 May 2021 14:58:49 -0000 (UTC)
paul@whooppee.com (Paul Goyette) writes:
> Here's the real stuff from pastebin.com:
> May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] trap type 6 code 0 rip 0xffffffff80869d91 cs 0x8 rflags 0x10206 cr2 0xc0 ilevel 0 rsp 0xffffaf80995628e0
> May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] ntfs_findvattr() at netbsd:ntfs_findvattr+0xc8
> May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] ntfs_ntvattrget() at netbsd:ntfs_ntvattrget+0x266
> May 9 10:36:23 lancelot /netbsd: [ 2600.5752194] ntfs_loadvnode() at netbsd:ntfs_loadvnode+0xba
> May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] vcache_get() at netbsd:vcache_get+0x1ef
> May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] ntfs_vgetex() at netbsd:ntfs_vgetex+0x7a
> May 9 10:36:23 lancelot /netbsd: [ 2600.5852243] ntfs_mountfs() at netbsd:ntfs_mountfs+0x238
The code tries to create the system vnodes in ntfs_mountfs():
int pi[3] = { NTFS_MFTINO, NTFS_ROOTINO, NTFS_BITMAPINO };
for (i = 0; i < 3; i++) {
error = VFS_VGET(mp, pi[i], LK_EXCLUSIVE,
&(ntmp->ntm_sysvn[pi[i]]));
...
}
which triggers ntfs_findvattr which calls ntfs_loadntnode() that
assumes that the system vnodes are alrady fetched:
if (ip->i_number < NTFS_SYSNODESNUM) {
:
} else {
struct vnode *vp;
vp = ntmp->ntm_sysvn[NTFS_MFTINO];
error = ntfs_readattr(ntmp, VTONT(vp), NTFS_A_DATA, NULL,
...
}
There vp is still NULL and VTONT(vp) dereferences it.
This code path seems to be mostly unchanged since netbsd-7 when
the vnode cache was introduced and that code was refactored.
From: "J. Hannken-Illjes" <hannken@eis.cs.tu-bs.de>
To: NetBSD GNATS <gnats-bugs@netbsd.org>
Cc:
Subject: Re: kern/56160: Mount ntfs usb disk
Date: Sun, 9 May 2021 17:21:48 +0200
--Apple-Mail=_DE512F8E-4A55-45B5-A6A3-BFD527EEE5F9
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=us-ascii
> On 9. May 2021, at 17:00, Michael van Elst <mlelstv@serpens.de> wrote:
<snip>
> The code tries to create the system vnodes in ntfs_mountfs():
>
> int pi[3] = { NTFS_MFTINO, NTFS_ROOTINO, NTFS_BITMAPINO };
> for (i = 0; i < 3; i++) {
> error = VFS_VGET(mp, pi[i], LK_EXCLUSIVE,
> &(ntmp->ntm_sysvn[pi[i]]));
> ...
> }
>
> which triggers ntfs_findvattr which calls ntfs_loadntnode() that
> assumes that the system vnodes are alrady fetched:
>
> if (ip->i_number < NTFS_SYSNODESNUM) {
> :
> } else {
> struct vnode *vp;
> vp = ntmp->ntm_sysvn[NTFS_MFTINO];
> error = ntfs_readattr(ntmp, VTONT(vp), NTFS_A_DATA, NULL,
> ...
> }
This path called with inumber 0, 5 or 6 should take the
top after if as NTFS_SYSNODESNUM is 0x0b ...
> There vp is still NULL and VTONT(vp) dereferences it.
>
>
> This code path seems to be mostly unchanged since netbsd-7 when
> the vnode cache was introduced and that code was refactored.
I'm quite sure I did mount a bunch of ntfs images after
to vnode cache.
The image triggering this crash could help if it doesn't
contain private or confidential information.
--
J. Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig
--Apple-Mail=_DE512F8E-4A55-45B5-A6A3-BFD527EEE5F9
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=signature.asc
Content-Type: application/pgp-signature;
name=signature.asc
Content-Description: Message signed with OpenPGP
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEE2BL3ha7Xao4WUZVYKoaVJdNr+uEFAmCX/gwACgkQKoaVJdNr
+uHCKwgAj24nz8kxX32rPD8x6dLceinCEXCxalCElXhMfCJnUPalXUZ/sU0KX7Ba
a40WcYAtdRQszj86dHjY1taeq34N0c9CqgjWcAKvnQf3e/h0vQQmrnjjIOEztZRh
XV69IZxqteAtscWLlwVSUOycv9REI5ygALensu9rtKFCGdzOt+nXvFtGTzqguMkS
WtxTy+BAlCu0bZfre1FDQBjD7eUnY21EAU7BXcvjUZ8bA9NdZDDrD0K/lsFTEVTL
MIWIG+plGYJ92R5RKXsrhrm+5any1DWMvaTIecOgnYuuF9R/Lvwd6ucSi5yySmCC
G9SxpGx5Fqf5kOftkA8AK3xNdBcxTg==
=PBsX
-----END PGP SIGNATURE-----
--Apple-Mail=_DE512F8E-4A55-45B5-A6A3-BFD527EEE5F9--
From: Osvaldo Frassine <osvaldo.frassine@disroot.org>
To: gnats-bugs@netbsd.org
Cc: "J. Hannken-Illjes" <hannken@eis.cs.tu-bs.de>,
kern-bug-people@netbsd.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: kern/56160: Mount ntfs usb disk
Date: Sun, 9 May 2021 19:10:52 +0200
Sorry, but it is private backup disk. I can't do an image, otherwise I could backup it, so I can remove all the confidential information. I need at least four days.
On Sun, 9 May 2021 15:25:01 +0000 (UTC)
"J. Hannken-Illjes" <hannken@eis.cs.tu-bs.de> wrote:
> The following reply was made to PR kern/56160; it has been noted by GNATS.
>
> From: "J. Hannken-Illjes" <hannken@eis.cs.tu-bs.de>
> To: NetBSD GNATS <gnats-bugs@netbsd.org>
> Cc:
> Subject: Re: kern/56160: Mount ntfs usb disk
> Date: Sun, 9 May 2021 17:21:48 +0200
>
> --Apple-Mail=_DE512F8E-4A55-45B5-A6A3-BFD527EEE5F9
> Content-Transfer-Encoding: 7bit
> Content-Type: text/plain;
> charset=us-ascii
>
> > On 9. May 2021, at 17:00, Michael van Elst <mlelstv@serpens.de> wrote:
> <snip>
> > The code tries to create the system vnodes in ntfs_mountfs():
> >
> > int pi[3] = { NTFS_MFTINO, NTFS_ROOTINO, NTFS_BITMAPINO };
> > for (i = 0; i < 3; i++) {
> > error = VFS_VGET(mp, pi[i], LK_EXCLUSIVE,
> > &(ntmp->ntm_sysvn[pi[i]]));
> > ...
> > }
> >
> > which triggers ntfs_findvattr which calls ntfs_loadntnode() that
> > assumes that the system vnodes are alrady fetched:
> >
> > if (ip->i_number < NTFS_SYSNODESNUM) {
> > :
> > } else {
> > struct vnode *vp;
> > vp = ntmp->ntm_sysvn[NTFS_MFTINO];
> > error = ntfs_readattr(ntmp, VTONT(vp), NTFS_A_DATA, NULL,
> > ...
> > }
>
> This path called with inumber 0, 5 or 6 should take the
> top after if as NTFS_SYSNODESNUM is 0x0b ...
>
> > There vp is still NULL and VTONT(vp) dereferences it.
> >
> >
> > This code path seems to be mostly unchanged since netbsd-7 when
> > the vnode cache was introduced and that code was refactored.
>
> I'm quite sure I did mount a bunch of ntfs images after
> to vnode cache.
>
>
> The image triggering this crash could help if it doesn't
> contain private or confidential information.
>
> --
> J. Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig
>
> --Apple-Mail=_DE512F8E-4A55-45B5-A6A3-BFD527EEE5F9
> Content-Transfer-Encoding: 7bit
> Content-Disposition: attachment;
> filename=signature.asc
> Content-Type: application/pgp-signature;
> name=signature.asc
> Content-Description: Message signed with OpenPGP
>
> -----BEGIN PGP SIGNATURE-----
>
> iQEzBAEBCAAdFiEE2BL3ha7Xao4WUZVYKoaVJdNr+uEFAmCX/gwACgkQKoaVJdNr
> +uHCKwgAj24nz8kxX32rPD8x6dLceinCEXCxalCElXhMfCJnUPalXUZ/sU0KX7Ba
> a40WcYAtdRQszj86dHjY1taeq34N0c9CqgjWcAKvnQf3e/h0vQQmrnjjIOEztZRh
> XV69IZxqteAtscWLlwVSUOycv9REI5ygALensu9rtKFCGdzOt+nXvFtGTzqguMkS
> WtxTy+BAlCu0bZfre1FDQBjD7eUnY21EAU7BXcvjUZ8bA9NdZDDrD0K/lsFTEVTL
> MIWIG+plGYJ92R5RKXsrhrm+5any1DWMvaTIecOgnYuuF9R/Lvwd6ucSi5yySmCC
> G9SxpGx5Fqf5kOftkA8AK3xNdBcxTg==
> =PBsX
> -----END PGP SIGNATURE-----
>
> --Apple-Mail=_DE512F8E-4A55-45B5-A6A3-BFD527EEE5F9--
>
--
Osvaldo Frassine <osvaldo.frassine@disroot.org>
From: "J. Hannken-Illjes" <hannken@eis.cs.tu-bs.de>
To: NetBSD GNATS <gnats-bugs@netbsd.org>
Cc:
Subject: Re: kern/56160: Mount ntfs usb disk
Date: Thu, 13 May 2021 10:10:36 +0200
--Apple-Mail=_1E038A7A-7989-410D-A632-C696B8FDAF56
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=us-ascii
This disk has an unusual format, what happens is:
- On mounting the disk we want to preload critical nodes,
first node 0 (MFT).
- During load we look for attribute 0x30 (NTFS_A_NAME) of node 0.
- While this attribute is usually resident this disk stores it
through its attribute 0x20 (NTFS_A_ATTRLIST) in node 16.
- Now happens what Michael expected: trying to load node 16
we use the not-yet initialized node 0 (MFT) to read the
attribute node and crash on null pointer dereference.
Excerpt from "ntfsinfo -i 0 -v":
Dumping Inode 0 (0x0)
Dumping attribute $STANDARD_INFORMATION (0x10) from mft record 0 (0x0)
Dumping attribute $ATTRIBUTE_LIST (0x20) from mft record 0 (0x0)
Dumping attribute list:
Attribute type: 0x10
Attribute type: 0x30
Starting VCN: 0 (0x0)
MFT reference: 16 (0x10)
Attribute type: 0x80
Attribute type: 0x80
Attribute type: 0xb0
End of attribute list reached.
Dumping attribute $FILE_NAME (0x30) from mft record 16 (0x10)
File Creation Time: Wed Oct 31 13:52:23 2012 UTC
Filename: '$MFT'
--
J. Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig
--Apple-Mail=_1E038A7A-7989-410D-A632-C696B8FDAF56
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=signature.asc
Content-Type: application/pgp-signature;
name=signature.asc
Content-Description: Message signed with OpenPGP
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEE2BL3ha7Xao4WUZVYKoaVJdNr+uEFAmCc3vwACgkQKoaVJdNr
+uEI6Qf9FeQ4ngLOIMZtNLchPwY2xfPd3+5o/EbV7/uwtgSbhAspqTBe+Zda20w2
PVki9BP2iPfRN+F6xC0LBXDfshQJIvuGUPFeOyR5UredLMJG9UWh7c1iYYsX7sUu
GTmFMz2B3ag12ru4OlWevMU4n4cjkMEN+4KKoLGna8C+UiQvE+72PJgahDX3k2BN
3dLibZ9GAXpqtaPE+GWjCw+myttMk4b6xCqn3EBvpyCL0Pjtb7tQkaQoXr9aEJvN
7VT5VjtF3OtF7z7Qpl52udN708KX33WKkOzjUIjn5vNf3l8H88RaULenSincREa7
vL60x84q0J4Vmae8Nagxt6iIzKZlIA==
=y6lj
-----END PGP SIGNATURE-----
--Apple-Mail=_1E038A7A-7989-410D-A632-C696B8FDAF56--
From: "Juergen Hannken-Illjes" <hannken@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/56160 CVS commit: src/sys/fs/ntfs
Date: Thu, 13 May 2021 08:57:29 +0000
Module Name: src
Committed By: hannken
Date: Thu May 13 08:57:29 UTC 2021
Modified Files:
src/sys/fs/ntfs: ntfs_subr.c
Log Message:
ntfs_loadntnode(): Use bread() when ntm_sysvn[NTFS_MFTINO] is NULL.
May happen when loading node 0 (MFT) during mount and some
attributes are stored in another ntnode.
PR kern/56160 (Mount ntfs usb disk)
To generate a diff of this commit:
cvs rdiff -u -r1.63 -r1.64 src/sys/fs/ntfs/ntfs_subr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Responsible-Changed-From-To: kern-bug-people->hannken
Responsible-Changed-By: hannken@NetBSD.org
Responsible-Changed-When: Thu, 13 May 2021 09:12:55 +0000
Responsible-Changed-Why:
Take.
State-Changed-From-To: open->pending-pullups
State-Changed-By: hannken@NetBSD.org
State-Changed-When: Thu, 13 May 2021 09:12:55 +0000
State-Changed-Why:
Fix committed and pullup to -9 requested with # 1272.
From: "Martin Husemann" <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/56160 CVS commit: [netbsd-9] src/sys/fs/ntfs
Date: Mon, 17 May 2021 15:48:57 +0000
Module Name: src
Committed By: martin
Date: Mon May 17 15:48:57 UTC 2021
Modified Files:
src/sys/fs/ntfs [netbsd-9]: ntfs_subr.c
Log Message:
Pull up following revision(s) (requested by hannken in ticket #1272):
sys/fs/ntfs/ntfs_subr.c: revision 1.64
ntfs_loadntnode(): Use bread() when ntm_sysvn[NTFS_MFTINO] is NULL.
May happen when loading node 0 (MFT) during mount and some
attributes are stored in another ntnode.
PR kern/56160 (Mount ntfs usb disk)
To generate a diff of this commit:
cvs rdiff -u -r1.61.22.1 -r1.61.22.2 src/sys/fs/ntfs/ntfs_subr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: pending-pullups->closed
State-Changed-By: hannken@NetBSD.org
State-Changed-When: Mon, 17 May 2021 16:34:18 +0000
State-Changed-Why:
Pullup to 9.2_STABLE complete.
Thanks for the report.
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.46 2020/01/03 16:35:01 leot Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2020
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.