linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Mike Kravetz <mike.kravetz@oracle.com>,
	Nic Losby <blurbdust@gmail.com>, Michal Hocko <mhocko@suse.com>,
	"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>,
	Yisheng Xie <xieyisheng1@huawei.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 4.15 047/105] hugetlbfs: check for pgoff value overflow
Date: Tue, 27 Mar 2018 18:27:27 +0200	[thread overview]
Message-ID: <20180327162800.183556530@linuxfoundation.org> (raw)
In-Reply-To: <20180327162757.813009222@linuxfoundation.org>

4.15-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Mike Kravetz <mike.kravetz@oracle.com>

commit 63489f8e821144000e0bdca7e65a8d1cc23a7ee7 upstream.

A vma with vm_pgoff large enough to overflow a loff_t type when
converted to a byte offset can be passed via the remap_file_pages system
call.  The hugetlbfs mmap routine uses the byte offset to calculate
reservations and file size.

A sequence such as:

  mmap(0x20a00000, 0x600000, 0, 0x66033, -1, 0);
  remap_file_pages(0x20a00000, 0x600000, 0, 0x20000000000000, 0);

will result in the following when task exits/file closed,

  kernel BUG at mm/hugetlb.c:749!
  Call Trace:
    hugetlbfs_evict_inode+0x2f/0x40
    evict+0xcb/0x190
    __dentry_kill+0xcb/0x150
    __fput+0x164/0x1e0
    task_work_run+0x84/0xa0
    exit_to_usermode_loop+0x7d/0x80
    do_syscall_64+0x18b/0x190
    entry_SYSCALL_64_after_hwframe+0x3d/0xa2

The overflowed pgoff value causes hugetlbfs to try to set up a mapping
with a negative range (end < start) that leaves invalid state which
causes the BUG.

The previous overflow fix to this code was incomplete and did not take
the remap_file_pages system call into account.

[mike.kravetz@oracle.com: v3]
  Link: http://lkml.kernel.org/r/20180309002726.7248-1-mike.kravetz@oracle.com
[akpm@linux-foundation.org: include mmdebug.h]
[akpm@linux-foundation.org: fix -ve left shift count on sh]
Link: http://lkml.kernel.org/r/20180308210502.15952-1-mike.kravetz@oracle.com
Fixes: 045c7a3f53d9 ("hugetlbfs: fix offset overflow in hugetlbfs mmap")
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
Reported-by: Nic Losby <blurbdust@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Yisheng Xie <xieyisheng1@huawei.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/hugetlbfs/inode.c |   17 ++++++++++++++---
 mm/hugetlb.c         |    7 +++++++
 2 files changed, 21 insertions(+), 3 deletions(-)

--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -118,6 +118,16 @@ static void huge_pagevec_release(struct
 	pagevec_reinit(pvec);
 }
 
+/*
+ * Mask used when checking the page offset value passed in via system
+ * calls.  This value will be converted to a loff_t which is signed.
+ * Therefore, we want to check the upper PAGE_SHIFT + 1 bits of the
+ * value.  The extra bit (- 1 in the shift value) is to take the sign
+ * bit into account.
+ */
+#define PGOFF_LOFFT_MAX \
+	(((1UL << (PAGE_SHIFT + 1)) - 1) <<  (BITS_PER_LONG - (PAGE_SHIFT + 1)))
+
 static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma)
 {
 	struct inode *inode = file_inode(file);
@@ -137,12 +147,13 @@ static int hugetlbfs_file_mmap(struct fi
 	vma->vm_ops = &hugetlb_vm_ops;
 
 	/*
-	 * Offset passed to mmap (before page shift) could have been
-	 * negative when represented as a (l)off_t.
+	 * page based offset in vm_pgoff could be sufficiently large to
+	 * overflow a (l)off_t when converted to byte offset.
 	 */
-	if (((loff_t)vma->vm_pgoff << PAGE_SHIFT) < 0)
+	if (vma->vm_pgoff & PGOFF_LOFFT_MAX)
 		return -EINVAL;
 
+	/* must be huge page aligned */
 	if (vma->vm_pgoff & (~huge_page_mask(h) >> PAGE_SHIFT))
 		return -EINVAL;
 
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -18,6 +18,7 @@
 #include <linux/bootmem.h>
 #include <linux/sysfs.h>
 #include <linux/slab.h>
+#include <linux/mmdebug.h>
 #include <linux/sched/signal.h>
 #include <linux/rmap.h>
 #include <linux/string_helpers.h>
@@ -4354,6 +4355,12 @@ int hugetlb_reserve_pages(struct inode *
 	struct resv_map *resv_map;
 	long gbl_reserve;
 
+	/* This should never happen */
+	if (from > to) {
+		VM_WARN(1, "%s called with a negative range\n", __func__);
+		return -EINVAL;
+	}
+
 	/*
 	 * Only apply hugepage reservation if asked. At fault time, an
 	 * attempt will be made for VM_NORESERVE to allocate a page

  parent reply	other threads:[~2018-03-27 16:27 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-27 16:26 [PATCH 4.15 000/105] 4.15.14-stable review Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 001/105] MIPS: ralink: Remove ralink_halt() Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 002/105] MIPS: ralink: Fix booting on MT7621 Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 003/105] MIPS: lantiq: Fix Danube USB clock Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 004/105] MIPS: lantiq: Enable AHB Bus for USB Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 005/105] MIPS: lantiq: ase: Enable MFD_SYSCON Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 006/105] iio: chemical: ccs811: Corrected firmware boot/application mode transition Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 007/105] iio: st_pressure: st_accel: pass correct platform data to init Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 008/105] iio: adc: meson-saradc: unlock on error in meson_sar_adc_lock() Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 009/105] ALSA: usb-audio: Fix parsing descriptor of UAC2 processing unit Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 010/105] ALSA: aloop: Sync stale timer before release Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 011/105] ALSA: aloop: Fix access to not-yet-ready substream via cable Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 012/105] ALSA: hda - Force polling mode on CFL for fixing codec communication Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 013/105] ALSA: hda/realtek - Fix speaker no sound after system resume Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 014/105] ALSA: hda/realtek - Fix Dell headset Mic cant record Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 015/105] ALSA: hda/realtek - Always immediately update mute LED with pin VREF Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 016/105] mmc: core: Fix tracepoint print of blk_addr and blksz Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 017/105] mmc: core: Disable HPI for certain Micron (Numonyx) eMMC cards Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 018/105] mmc: block: fix updating ext_csd caches on ioctl call Greg Kroah-Hartman
2018-03-27 16:26 ` [PATCH 4.15 019/105] mmc: dw_mmc: Fix the DTO/CTO timeout overflow calculation for 32-bit systems Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 020/105] mmc: dw_mmc: exynos: fix the suspend/resume issue for exynos5433 Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 021/105] mmc: dw_mmc: fix falling from idmac to PIO mode when dw_mci_reset occurs Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 022/105] PCI: Add function 1 DMA alias quirk for Highpoint RocketRAID 644L Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 023/105] ahci: Add PCI-id for the Highpoint Rocketraid 644L card Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 024/105] lockdep: fix fs_reclaim warning Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 025/105] clk: bcm2835: Fix ana->maskX definitions Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 026/105] clk: bcm2835: Protect sections updating shared registers Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 027/105] clk: sunxi-ng: a31: Fix CLK_OUT_* clock ops Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 028/105] RDMA/mlx5: Fix crash while accessing garbage pointer and freed memory Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 029/105] Drivers: hv: vmbus: Fix ring buffer signaling Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 030/105] pinctrl: samsung: Validate alias coming from DT Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 031/105] Bluetooth: btusb: Remove Yoga 920 from the btusb_needs_reset_resume_table Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 032/105] Bluetooth: btusb: Add Dell OptiPlex 3060 to btusb_needs_reset_resume_table Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 033/105] Bluetooth: btusb: Fix quirk for Atheros 1525/QCA6174 Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 034/105] libata: fix length validation of ATAPI-relayed SCSI commands Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 035/105] libata: remove WARN() for DMA or PIO command without data Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 036/105] libata: dont try to pass through NCQ commands to non-NCQ devices Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 037/105] libata: Apply NOLPM quirk to Crucial MX100 512GB SSDs Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 038/105] libata: disable LPM for Crucial BX100 SSD 500GB drive Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 039/105] libata: Enable queued TRIM for Samsung SSD 860 Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 040/105] libata: Apply NOLPM quirk to Crucial M500 480 and 960GB SSDs Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 041/105] libata: Make Crucial BX100 500GB LPM quirk apply to all firmware versions Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 042/105] libata: Modify quirks for MX100 to limit NCQ_TRIM quirk to MU01 version Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 043/105] sched, cgroup: Dont reject lower cpu.max on ancestors Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 044/105] cgroup: fix rule checking for threaded mode switching Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 045/105] nfsd: remove blocked locks on client teardown Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 046/105] media: tegra-cec: reset rx_buf_cnt when start bit detected Greg Kroah-Hartman
2018-03-27 16:27 ` Greg Kroah-Hartman [this message]
2018-03-27 16:27 ` [PATCH 4.15 048/105] h8300: remove extraneous __BIG_ENDIAN definition Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 049/105] mm/vmalloc: add interfaces to free unmapped page table Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 050/105] x86/mm: implement free pmd/pte page interfaces Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 051/105] mm/khugepaged.c: convert VM_BUG_ON() to collapse fail Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 052/105] mm/thp: do not wait for lock_page() in deferred_split_scan() Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 053/105] mm/shmem: do not wait for lock_page() in shmem_unused_huge_shrink() Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 054/105] Revert "mm: page_alloc: skip over regions of invalid pfns where possible" Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 055/105] drm/vmwgfx: Fix black screen and device errors when running without fbdev Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 056/105] drm/vmwgfx: Fix a destoy-while-held mutex problem Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 057/105] drm/radeon: Dont turn off DP sink when disconnected Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 058/105] drm/amd/display: We shouldnt set format_default on plane as atomic driver Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 059/105] drm/amd/display: Add one to EDIDs audio channel count when passing to DC Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 060/105] drm: Reject getfb for multi-plane framebuffers Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 061/105] drm: udl: Properly check framebuffer mmap offsets Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 062/105] mm/vmscan: wake up flushers for legacy cgroups too Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 063/105] module: propagate error in modules_open() Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 064/105] acpi, numa: fix pxm to online numa node associations Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 065/105] ACPI / watchdog: Fix off-by-one error at resource assignment Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 066/105] libnvdimm, {btt, blk}: do integrity setup before add_disk() Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 067/105] brcmfmac: fix P2P_DEVICE ethernet address generation Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 068/105] rtlwifi: rtl8723be: Fix loss of signal Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 069/105] tracing: probeevent: Fix to support minus offset from symbol Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 070/105] mtdchar: fix usage of mtd_ooblayout_ecc() Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 071/105] mtd: nand: fsl_ifc: Fix nand waitfunc return value Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 072/105] mtd: nand: fsl_ifc: Fix eccstat array overflow for IFC ver >= 2.0.0 Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 073/105] mtd: nand: fsl_ifc: Read ECCSTAT0 and ECCSTAT1 registers for IFC 2.0 Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 074/105] staging: ncpfs: memory corruption in ncp_read_kernel() Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 075/105] can: peak/pcie_fd: fix echo_skb is occupied! bug Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 076/105] can: peak/pcie_fd: remove useless code when interface starts Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 077/105] can: ifi: Repair the error handling Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 078/105] can: ifi: Check core revision upon probe Greg Kroah-Hartman
2018-03-27 16:27 ` [PATCH 4.15 079/105] can: cc770: Fix stalls on rt-linux, remove redundant IRQ ack Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 080/105] can: cc770: Fix queue stall & dropped RTR reply Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 081/105] can: cc770: Fix use after free in cc770_tx_interrupt() Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 082/105] tty: vt: fix up tabstops properly Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 083/105] x86/entry/64: Dont use IST entry for #BP stack Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 084/105] selftests/x86/ptrace_syscall: Fix for yet more glibc interference Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 085/105] x86/vsyscall/64: Use proper accessor to update P4D entry Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 086/105] x86/efi: Free efi_pgd with free_pages() Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 087/105] posix-timers: Protect posix clock array access against speculation Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 088/105] kvm/x86: fix icebp instruction handling Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 089/105] x86/build/64: Force the linker to use 2MB page size Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 090/105] x86/boot/64: Verify alignment of the LOAD segment Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 091/105] hwmon: (k10temp) Only apply temperature offset if result is positive Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 092/105] hwmon: (k10temp) Add temperature offset for Ryzen 1900X Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 093/105] perf/x86/intel/uncore: Fix Skylake UPI event format Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 094/105] perf stat: Fix CVS output format for non-supported counters Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 095/105] perf/core: Fix ctx_event_type in ctx_resched() Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 096/105] trace/bpf: remove helper bpf_perf_prog_read_value from tracepoint type programs Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 097/105] perf/x86/intel: Dont accidentally clear high bits in bdw_limit_period() Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 098/105] perf/x86/intel/uncore: Fix multi-domain PCI CHA enumeration bug on Skylake servers Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 099/105] iio: ABI: Fix name of timestamp sysfs file Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 100/105] iio: imu: st_lsm6dsx: fix endianness in st_lsm6dsx_read_oneshot() Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 101/105] iio: imu: st_lsm6dsx: introduce conf_lock mutex Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 102/105] staging: android: ion: Zero CMA allocated memory Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 103/105] kbuild: disable clangs default use of -fmerge-all-constants Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 104/105] bpf: skip unnecessary capability check Greg Kroah-Hartman
2018-03-27 16:28 ` [PATCH 4.15 105/105] bpf, x64: increase number of passes Greg Kroah-Hartman
2018-03-27 22:57 ` [PATCH 4.15 000/105] 4.15.14-stable review Shuah Khan
2018-03-28  6:02   ` Greg Kroah-Hartman
2018-03-27 23:01 ` kernelci.org bot
2018-03-28 13:39 ` Guenter Roeck
2018-03-28 16:31 ` Thadeu Lima de Souza Cascardo
2018-03-28 17:06   ` Greg Kroah-Hartman
2018-03-28 18:44 ` Dan Rue
2018-03-28 19:06   ` Mike Kravetz
2018-03-29  0:42     ` Mike Kravetz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180327162800.183556530@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=blurbdust@gmail.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhocko@suse.com \
    --cc=mike.kravetz@oracle.com \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=xieyisheng1@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).