Reported by: Sebastien Bernard <sbernard@nerim.net>
Date: Fri, 2 Jul 2004 10:18:01 UTC
Severity: normal
Fixed in version kernel-source-2.6.8/2.6.8-1
Done: Andres Salomon <dilinger@voxel.net>
Bug is archived. No further changes may be made.
View this report as an mbox folder, status mbox, maintainer mbox
Report forwarded to debian-bugs-dist@lists.debian.org, Nathan Scott <nathans@debian.org>:
Bug#257265; Package xfsprogs.
(full text, mbox, link).
Acknowledgement sent to Sebastien Bernard <sbernard@nerim.net>:
New Bug report received and forwarded. Copy sent to Nathan Scott <nathans@debian.org>.
(full text, mbox, link).
Message #5 received at submit@bugs.debian.org (full text, mbox, reply):
Package: xfsprogs
Version: 2.6.11-1
Severity: important
Hi,
I'm having problem using xfs_growfs on my sparc64 machine.
Here is the symptom.
calypso:/home/seb# xfs_growfs -p xfs_info -n /dev/syscalypso/debian
xfs_info: cannot determine geometry of filesystem mounted at /var/www/debian: Invalid argument
In the kernel log I have the following errors :
ioctl32(xfs_growfs:26751): Unknown cmd fd(3) cmd(4070587c){00} arg(effff528) on /var/www/debian
ioctl32(xfs_growfs:26751): Unknown cmd fd(3) cmd(40705864){00} arg(effff528) on /var/www/debian
ioctl32(xfs_growfs:26769): Unknown cmd fd(3) cmd(4070587c){00} arg(effff538) on /var/www/debian
After looking through the xfs ML and googling, I found that it is related to arch used.
The tools must be 64bits userland to work with a 64bit kernel.
Recompiling the tools with 64bits gcc makes the growfs work normally.
No more problem.
Maybe the obvious fix is to ship 64bit userland with the sun4u platform.
Or to fix the ioctl32 for xfs fs driver.
Anyway, I am not providing a patch now because I don't know if it is the correct fix and
recompiling the xfs_progs involves recompiling the uuid too which leads to recompile the e2fs programs
too.
Thanks for your attention.
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: sparc (sparc64)
Kernel: Linux 2.6.7-rc3
Locale: LANG=C, LC_CTYPE=C
Versions of packages xfsprogs depends on:
ii libc6 2.3.2.ds1-13 GNU C Library: Shared libraries an
ii libncurses5 5.4-4 Shared libraries for terminal hand
ii libreadline4 4.3-10 GNU readline and history libraries
ii libuuid1 1.35-6 Universally unique id library
-- no debconf information
Information forwarded to debian-bugs-dist@lists.debian.org, Nathan Scott <nathans@debian.org>:
Bug#257265; Package xfsprogs.
(full text, mbox, link).
Acknowledgement sent to Nathan Scott <nathans@sgi.com>:
Extra info received and forwarded to list. Copy sent to Nathan Scott <nathans@debian.org>.
(full text, mbox, link).
Message #10 received at 257265@bugs.debian.org (full text, mbox, reply):
On Fri, Jul 02, 2004 at 12:03:19PM +0200, Sebastien Bernard wrote:
> Package: xfsprogs
> Version: 2.6.11-1
> Severity: important
>
> Hi,
> I'm having problem using xfs_growfs on my sparc64 machine.
> Here is the symptom.
> calypso:/home/seb# xfs_growfs -p xfs_info -n /dev/syscalypso/debian
> xfs_info: cannot determine geometry of filesystem mounted at /var/www/debian: Invalid argument
> In the kernel log I have the following errors :
> ioctl32(xfs_growfs:26751): Unknown cmd fd(3) cmd(4070587c){00} arg(effff528) on /var/www/debian
> ioctl32(xfs_growfs:26751): Unknown cmd fd(3) cmd(40705864){00} arg(effff528) on /var/www/debian
> ioctl32(xfs_growfs:26769): Unknown cmd fd(3) cmd(4070587c){00} arg(effff538) on /var/www/debian
> ...
> Or to fix the ioctl32 for xfs fs driver.
I believe thats the right solution, yes.
I discussed this with one of the other XFS developers, and here's
what he said...
On Tue, Jul 06, 2004 at 12:51:18AM +0200, Christoph Hellwig wrote:
> On Tue, Jul 06, 2004 at 09:46:48AM +1000, Nathan Scott wrote:
> > Hi Christoph,
> >
> > This looks like another person hitting the 32/64 bit ABI
> > issues in XFS userspace/kernel ioctls. Is it difficult to
> > add stuff to the ioctl32 layer? I know nothing about that
> > code - could you give me some pointers wrt where changes are
> > needed to add in new compat glue that I can forward on?
> >
> > Hmmm, cscope picks up [un]register_ioctl32_conversion and
> > linux/ioctl32.h as starting points; Is that on the right
> > track? If so, mptctl.c looks like a start -- would that be
> > a good/bad/indifferent driver to base code on?
>
> It's not that difficult unless pointers are involved. I'm getting
> a brand new G5 mac soon (hopefully this week), with which I'll hit
> the issue myself. I'll take a look then.
>
So, this may get fixed soon. If you can't wait, I'd suggest
you start looking through the code I've pointed out above, I
think thats the correct interface to use.
cheers.
--
Nathan
Bug reassigned from package `xfsprogs' to `kernel'.
Request was from Christoph Hellwig <hch@lst.de>
to control@bugs.debian.org.
(full text, mbox, link).
Severity set to `normal'.
Request was from Christoph Hellwig <hch@lst.de>
to control@bugs.debian.org.
(full text, mbox, link).
Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#257265; Package kernel.
(full text, mbox, link).
Acknowledgement sent to Christoph Hellwig <hch@lst.de>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>.
(full text, mbox, link).
Message #19 received at 257265@bugs.debian.org (full text, mbox, reply):
Or rather non-translation. This just feeds through the ioctls where the
structyure size matches for 32bit vs 64bit, that's all but the various
handle and bulkstat ioctls.
--- 1.31/fs/xfs/Makefile 2004-06-18 04:05:01 +02:00
+++ edited/fs/xfs/Makefile 2004-07-07 18:58:47 +02:00
@@ -71,6 +71,7 @@
xfs-$(CONFIG_XFS_POSIX_MAC) += xfs_mac.o
xfs-$(CONFIG_PROC_FS) += linux-2.6/xfs_stats.o
xfs-$(CONFIG_SYSCTL) += linux-2.6/xfs_sysctl.o
+xfs-$(CONFIG_COMPAT) += linux-2.6/xfs_ioctl32.o
xfs-y += xfs_alloc.o \
--- 1.84/fs/xfs/linux-2.6/xfs_super.c 2004-06-18 06:09:11 +02:00
+++ edited/fs/xfs/linux-2.6/xfs_super.c 2004-07-11 00:41:02 +02:00
@@ -66,6 +66,7 @@
#include "xfs_buf_item.h"
#include "xfs_utils.h"
#include "xfs_version.h"
+#include "xfs_ioctl32.h"
#include <linux/namei.h>
#include <linux/init.h>
@@ -857,6 +858,10 @@
goto undo_shaker;
}
+ error = xfs_ioctl32_init();
+ if (error)
+ goto undo_ioctl32;
+
error = register_filesystem(&xfs_fs_type);
if (error)
goto undo_register;
@@ -864,6 +869,9 @@
return 0;
undo_register:
+ xfs_ioctl32_exit();
+
+undo_ioctl32:
kmem_shake_deregister(xfs_inode_shaker);
undo_shaker:
@@ -882,6 +890,7 @@
vfs_exitquota();
XFS_DM_EXIT(&xfs_fs_type);
unregister_filesystem(&xfs_fs_type);
+ xfs_ioctl32_exit();
kmem_shake_deregister(xfs_inode_shaker);
xfs_cleanup();
pagebuf_terminate();
--- /dev/null 2004-05-30 14:45:31.000000000 +0200
+++ edited/fs/xfs/linux-2.6/xfs_ioctl32.c 2004-07-11 17:08:46.000000000 +0200
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like. Any license provided herein, whether implied or
+ * otherwise, applies only to this software file. Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ *
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA 94043, or:
+ *
+ * http://www.sgi.com
+ *
+ * For further information regarding this notice, see:
+ *
+ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+ */
+
+#include <linux/init.h>
+#include <linux/ioctl.h>
+#include <linux/ioctl32.h>
+#include <linux/types.h>
+
+#include "xfs_types.h"
+#include "xfs_fs.h"
+
+#define XFS_IOC_GETXFLAGS _IOR('f', 1, long)
+#define XFS_IOC_SETXFLAGS _IOW('f', 2, long)
+#define XFS_IOC_GETVERSION _IOR('v', 1, long)
+
+struct ioctl_trans xfs_ioctl32_trans[] = {
+ /* xfs_flock_t has wrong alignment for x86_64 */
+#if 1
+ { XFS_IOC_ALLOCSP, },
+ { XFS_IOC_FREESP, },
+ { XFS_IOC_RESVSP, },
+ { XFS_IOC_UNRESVSP, },
+ { XFS_IOC_ALLOCSP64, },
+ { XFS_IOC_FREESP64, },
+ { XFS_IOC_RESVSP64, },
+ { XFS_IOC_UNRESVSP64, },
+#endif
+ { XFS_IOC_DIOINFO, NULL },
+#if 0 /* bulkstat is complicated */
+ { XFS_IOC_FSBULKSTAT_SINGLE, },
+ { XFS_IOC_FSBULKSTAT, },
+ { XFS_IOC_FSINUMBERS, },
+#endif
+ { XFS_IOC_FSGEOMETRY_V1, },
+ { XFS_IOC_FSGEOMETRY, },
+ { XFS_IOC_GETVERSION, },
+ { XFS_IOC_GETXFLAGS, },
+ { XFS_IOC_SETXFLAGS, },
+ { XFS_IOC_FSGETXATTR, },
+ { XFS_IOC_FSSETXATTR, },
+ { XFS_IOC_FSGETXATTRA, },
+ { XFS_IOC_FSSETDM, },
+ { XFS_IOC_GETBMAP, },
+ { XFS_IOC_GETBMAPA, },
+ { XFS_IOC_GETBMAPX, },
+#if 0 /* handle ioctls are dealing with embedded pointers */
+ { XFS_IOC_FD_TO_HANDLE, },
+ { XFS_IOC_PATH_TO_HANDLE, },
+ { XFS_IOC_PATH_TO_HANDLE, },
+ { XFS_IOC_PATH_TO_FSHANDLE, },
+ { XFS_IOC_OPEN_BY_HANDLE, },
+ { XFS_IOC_FSSETDM_BY_HANDLE, },
+ { XFS_IOC_READLINK_BY_HANDLE, },
+ { XFS_IOC_ATTRLIST_BY_HANDLE, },
+ { XFS_IOC_ATTRMULTI_BY_HANDLE, },
+#endif
+#if 1 /* xfs_bstat_t has wrong alignment for x86_64 */
+ { XFS_IOC_SWAPEXT, },
+#endif
+ { XFS_IOC_FSCOUNTS, NULL, },
+ { XFS_IOC_SET_RESBLKS, NULL, },
+ { XFS_IOC_GET_RESBLKS, NULL, },
+ { XFS_IOC_FSGROWFSDATA, NULL, },
+ { XFS_IOC_FSGROWFSLOG, NULL, },
+ { XFS_IOC_FSGROWFSRT, NULL, },
+ { XFS_IOC_FREEZE, NULL, },
+ { XFS_IOC_THAW, NULL, },
+ { XFS_IOC_GOINGDOWN, NULL, },
+ { XFS_IOC_ERROR_INJECTION, NULL, },
+ { XFS_IOC_ERROR_CLEARALL, NULL, },
+ { 0, },
+};
+
+int __init
+xfs_ioctl32_init(void)
+{
+ int error, i;
+
+ for (i = 0; xfs_ioctl32_trans[i].cmd != 0; i++) {
+ error = register_ioctl32_conversion(xfs_ioctl32_trans[i].cmd,
+ xfs_ioctl32_trans[i].handler);
+ if (error)
+ goto fail;
+ }
+
+ return 0;
+
+ fail:
+ while (--i)
+ unregister_ioctl32_conversion(xfs_ioctl32_trans[i].cmd);
+ return error;
+}
+
+void __exit
+xfs_ioctl32_exit(void)
+{
+ int i;
+
+ for (i = 0; xfs_ioctl32_trans[i].cmd != 0; i++)
+ unregister_ioctl32_conversion(xfs_ioctl32_trans[i].cmd);
+}
--- /dev/null 2004-05-30 14:45:31.000000000 +0200
+++ edited/fs/xfs/linux-2.6/xfs_ioctl32.h 2004-07-11 00:39:22.000000000 +0200
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like. Any license provided herein, whether implied or
+ * otherwise, applies only to this software file. Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ *
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA 94043, or:
+ *
+ * http://www.sgi.com
+ *
+ * For further information regarding this notice, see:
+ *
+ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+ */
+
+#include <linux/config.h>
+
+#ifdef CONFIG_COMPAT
+extern int xfs_ioctl32_init(void);
+extern void xfs_ioctl32_exit(void);
+#else
+static inline int xfs_ioctl32_init(void) { return 0; }
+static inline void xfs_ioctl32_exit(void) { }
+#endif
Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#257265; Package kernel.
(full text, mbox, link).
Acknowledgement sent to Sébastien Bernard <sbernard@nerim.net>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>.
(full text, mbox, link).
Message #24 received at 257265@bugs.debian.org (full text, mbox, reply):
I agree this one should fix the problem I encounter. This seems a neverending run to catch up with iotcl. I would like to add that this kind of 32bits ioctl translation are not xfs only. I encounter several other (in ipv6/pppd for instance) when kernel is running. I have no information about the location that cause the error to pop, only some hint regarding the logs generated by the others programs. Does right fix is correct 32bits translation for everyone or 64bit build for all programs that request ioctl from the program ? > Or rather non-translation. This just feeds through the ioctls where the > structyure size matches for 32bit vs 64bit, that's all but the various > handle and bulkstat ioctls. > [patch deleted]
Information forwarded to debian-bugs-dist@lists.debian.org, Herbert Xu <herbert@debian.org>:
Bug#257265; Package kernel.
(full text, mbox, link).
Acknowledgement sent to Christoph Hellwig <hch@lst.de>:
Extra info received and forwarded to list. Copy sent to Herbert Xu <herbert@debian.org>.
(full text, mbox, link).
Message #29 received at 257265@bugs.debian.org (full text, mbox, reply):
On Fri, Jul 16, 2004 at 12:24:09PM +0200, S?bastien Bernard wrote: > I agree this one should fix the problem I encounter. This seems a > neverending run to catch up with iotcl. > I would like to add that this kind of 32bits ioctl translation are not xfs > only. > I encounter several other (in ipv6/pppd for instance) when kernel is running. > I have no information about the location that cause the error to pop, only > some hint regarding the logs generated by the others programs. > Does right fix is correct 32bits translation for everyone or 64bit build > for all programs that request ioctl from the program ? We should add ioctl translations for everything, but please open new bugs for different sets of ioctls.
Reply sent to Andres Salomon <dilinger@voxel.net>:
You have taken responsibility.
(full text, mbox, link).
Notification sent to Sebastien Bernard <sbernard@nerim.net>:
Bug acknowledged by developer.
(full text, mbox, link).
Message #34 received at 257265-close@bugs.debian.org (full text, mbox, reply):
Source: kernel-source-2.6.8
Source-Version: 2.6.8-1
We believe that the bug you reported is fixed in the latest version of
kernel-source-2.6.8, which is due to be installed in the Debian FTP archive:
kernel-doc-2.6.8_2.6.8-1_all.deb
to pool/main/k/kernel-source-2.6.8/kernel-doc-2.6.8_2.6.8-1_all.deb
kernel-patch-debian-2.6.8_2.6.8-1_all.deb
to pool/main/k/kernel-source-2.6.8/kernel-patch-debian-2.6.8_2.6.8-1_all.deb
kernel-source-2.6.8_2.6.8-1.diff.gz
to pool/main/k/kernel-source-2.6.8/kernel-source-2.6.8_2.6.8-1.diff.gz
kernel-source-2.6.8_2.6.8-1.dsc
to pool/main/k/kernel-source-2.6.8/kernel-source-2.6.8_2.6.8-1.dsc
kernel-source-2.6.8_2.6.8-1_all.deb
to pool/main/k/kernel-source-2.6.8/kernel-source-2.6.8_2.6.8-1_all.deb
kernel-source-2.6.8_2.6.8.orig.tar.gz
to pool/main/k/kernel-source-2.6.8/kernel-source-2.6.8_2.6.8.orig.tar.gz
kernel-tree-2.6.8_2.6.8-1_all.deb
to pool/main/k/kernel-source-2.6.8/kernel-tree-2.6.8_2.6.8-1_all.deb
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 257265@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Andres Salomon <dilinger@voxel.net> (supplier of updated kernel-source-2.6.8 package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Format: 1.7
Date: Sat, 14 Aug 2004 02:40:50 -0400
Source: kernel-source-2.6.8
Binary: kernel-source-2.6.8 kernel-doc-2.6.8 kernel-tree-2.6.8 kernel-patch-debian-2.6.8
Architecture: source all
Version: 2.6.8-1
Distribution: unstable
Urgency: high
Maintainer: dann frazier <dannf@debian.org>
Changed-By: Andres Salomon <dilinger@voxel.net>
Description:
kernel-doc-2.6.8 - Linux kernel specific documentation for version 2.6.8
kernel-patch-debian-2.6.8 - Debian patches to Linux 2.6.8
kernel-source-2.6.8 - Linux kernel source for version 2.6.8 with Debian patches
kernel-tree-2.6.8 - Linux kernel tree for building prepackaged Debian kernel images
Closes: 257265
Changes:
kernel-source-2.6.8 (2.6.8-1) unstable; urgency=high
.
* New upstream release.
.
* Nuke tg3.c properly in prune-non-free; rely on patch to supply driver
(Andres Salomon).
.
* The following patches have been merged upstream (Andres Salomon):
. acpi-typo
. chown-gid-check
. chown-procfs
. dont-dereference-netdev.name-before-register_netdev
(partially applied; this is a broken patch)
. drivers-atkbd-quiten
. drivers-dpt_i2o-fixup
. drivers-isdn-io_funcs-fixup
. drivers-net-irda-dma_api
. drivers-net-via_rhine-avoid_bitfield
. drivers-sb-pnp_unregister
. drivers-scsi-advansys-dma_api
. drivers-scsi-sd-NO_SENSE
. drivers-usb-net-pegasus-startstop_queue
. envp
. fs-isofs-acorn
. fs-isofs-dont-check-period
. fs-jfs-compile
. include-linux-mca.h-fixups
. netfilter-signedcharbug
. netlink-macro-fixups
. powerpc-g4-errata
. xfs-update
.
* The following patches have been modified (Andres Salomon):
. drivers-input-hiddev-HIDIOCGUCODE
(sparse fixes; s/(void *) arg/user_arg/g)
. remove-references-to-removed-drivers
(upstream now considers SMCTR a broken and legacy driver)
. drivers-net-tg3-readd
(forward port firmware changes to new tg3; from version 3.3
of driver to version 3.8)
.
* Stop the kernel distclean from nuking the debian directory by
having the clean rule check for debian/official (Andres Salomon).
.
* Fix typo in alpha-termbits patch naming (Christoph Hellwig).
.
* Drop two unneeded patches (Christoph Hellwig):
. fs-cramfs-constify
. include-thread_info-ifdefs
.
* Remove -2 postfixes from patches, this is a new upstream release
(Christoph Hellwig).
.
* Add NFS OOPS fix (Christoph Hellwig).
.
* Add SG_IO WRITE_BUFFER capability check (Christoph Hellwig).
.
* Fix IA64 generic kernel compile on UP (Christoph Hellwig).
.
* Add pty leak fix from Al Viro (Christoph Hellwig).
.
* Add patch from Gustavo Barbier to support IBM RS/6000 7043-240 and -E30
(Christoph Hellwig).
.
* Add 32bit ioctl translation support to XFS (closes: Bug#257265)
(Christoph Hellwig).
.
* Revert sym53c8xx driver (dann frazier).
Files:
697e087e42c2f7611f15c61845df485b 911 devel optional kernel-source-2.6.8_2.6.8-1.dsc
0393c05ffa4770c3c5178b74dc7a4282 43929719 devel optional kernel-source-2.6.8_2.6.8.orig.tar.gz
cd24c5b6f52c5affdf6f2f92818748ff 514296 devel optional kernel-source-2.6.8_2.6.8-1.diff.gz
0616326d6f0ca7cbc33ccea0c4ed32d2 182916 devel optional kernel-patch-debian-2.6.8_2.6.8-1_all.deb
730a063b793a39ef802682eca28f34ee 302272 devel optional kernel-tree-2.6.8_2.6.8-1_all.deb
cfa0be53d5689b4107e4781b190365fa 34893260 devel optional kernel-source-2.6.8_2.6.8-1_all.deb
21511eaf149343b8d88b93a4c6ac41d7 6141908 doc optional kernel-doc-2.6.8_2.6.8-1_all.deb
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
iD8DBQFBHqrQhuANDBmkLRkRAndgAJ0SGbCCtby1DPVyOKRWLDX4zDJViACfXR9g
KXmrWFhFLF4Fy53M9jeZRGI=
=5Eea
-----END PGP SIGNATURE-----
Send a report that this bug log contains spam.
Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.
Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.