All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Ye Bin <yebin10@huawei.com>,
	Douglas Gilbert <dgilbert@interlog.com>,
	"Martin K . Petersen" <martin.petersen@oracle.com>,
	Sasha Levin <sashal@kernel.org>,
	JBottomley@odin.com, linux-scsi@vger.kernel.org
Subject: [PATCH AUTOSEL 5.15 63/82] scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs()
Date: Tue,  9 Nov 2021 17:16:21 -0500	[thread overview]
Message-ID: <20211109221641.1233217-63-sashal@kernel.org> (raw)
In-Reply-To: <20211109221641.1233217-1-sashal@kernel.org>

From: Ye Bin <yebin10@huawei.com>

[ Upstream commit f347c26836c270199de1599c3cd466bb7747caa9 ]

The following issue was observed running syzkaller:

BUG: KASAN: slab-out-of-bounds in memcpy include/linux/string.h:377 [inline]
BUG: KASAN: slab-out-of-bounds in sg_copy_buffer+0x150/0x1c0 lib/scatterlist.c:831
Read of size 2132 at addr ffff8880aea95dc8 by task syz-executor.0/9815

CPU: 0 PID: 9815 Comm: syz-executor.0 Not tainted 4.19.202-00874-gfc0fe04215a9 #2
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
Call Trace:
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0xe4/0x14a lib/dump_stack.c:118
 print_address_description+0x73/0x280 mm/kasan/report.c:253
 kasan_report_error mm/kasan/report.c:352 [inline]
 kasan_report+0x272/0x370 mm/kasan/report.c:410
 memcpy+0x1f/0x50 mm/kasan/kasan.c:302
 memcpy include/linux/string.h:377 [inline]
 sg_copy_buffer+0x150/0x1c0 lib/scatterlist.c:831
 fill_from_dev_buffer+0x14f/0x340 drivers/scsi/scsi_debug.c:1021
 resp_report_tgtpgs+0x5aa/0x770 drivers/scsi/scsi_debug.c:1772
 schedule_resp+0x464/0x12f0 drivers/scsi/scsi_debug.c:4429
 scsi_debug_queuecommand+0x467/0x1390 drivers/scsi/scsi_debug.c:5835
 scsi_dispatch_cmd+0x3fc/0x9b0 drivers/scsi/scsi_lib.c:1896
 scsi_request_fn+0x1042/0x1810 drivers/scsi/scsi_lib.c:2034
 __blk_run_queue_uncond block/blk-core.c:464 [inline]
 __blk_run_queue+0x1a4/0x380 block/blk-core.c:484
 blk_execute_rq_nowait+0x1c2/0x2d0 block/blk-exec.c:78
 sg_common_write.isra.19+0xd74/0x1dc0 drivers/scsi/sg.c:847
 sg_write.part.23+0x6e0/0xd00 drivers/scsi/sg.c:716
 sg_write+0x64/0xa0 drivers/scsi/sg.c:622
 __vfs_write+0xed/0x690 fs/read_write.c:485
kill_bdev:block_device:00000000e138492c
 vfs_write+0x184/0x4c0 fs/read_write.c:549
 ksys_write+0x107/0x240 fs/read_write.c:599
 do_syscall_64+0xc2/0x560 arch/x86/entry/common.c:293
 entry_SYSCALL_64_after_hwframe+0x49/0xbe

We get 'alen' from command its type is int. If userspace passes a large
length we will get a negative 'alen'.

Switch n, alen, and rlen to u32.

Link: https://lore.kernel.org/r/20211013033913.2551004-3-yebin10@huawei.com
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Ye Bin <yebin10@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/scsi_debug.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
index be04405457447..ead65cdfb522e 100644
--- a/drivers/scsi/scsi_debug.c
+++ b/drivers/scsi/scsi_debug.c
@@ -1896,8 +1896,9 @@ static int resp_report_tgtpgs(struct scsi_cmnd *scp,
 	unsigned char *cmd = scp->cmnd;
 	unsigned char *arr;
 	int host_no = devip->sdbg_host->shost->host_no;
-	int n, ret, alen, rlen;
 	int port_group_a, port_group_b, port_a, port_b;
+	u32 alen, n, rlen;
+	int ret;
 
 	alen = get_unaligned_be32(cmd + 6);
 	arr = kzalloc(SDEBUG_MAX_TGTPGS_ARR_SZ, GFP_ATOMIC);
@@ -1959,9 +1960,9 @@ static int resp_report_tgtpgs(struct scsi_cmnd *scp,
 	 * - The constructed command length
 	 * - The maximum array size
 	 */
-	rlen = min_t(int, alen, n);
+	rlen = min(alen, n);
 	ret = fill_from_dev_buffer(scp, arr,
-			   min_t(int, rlen, SDEBUG_MAX_TGTPGS_ARR_SZ));
+			   min_t(u32, rlen, SDEBUG_MAX_TGTPGS_ARR_SZ));
 	kfree(arr);
 	return ret;
 }
-- 
2.33.0


  parent reply	other threads:[~2021-11-09 22:21 UTC|newest]

Thread overview: 150+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-09 22:15 [PATCH AUTOSEL 5.15 01/82] arm64: zynqmp: Do not duplicate flash partition label property Sasha Levin
2021-11-09 22:15 ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 02/82] arm64: zynqmp: Fix serial compatible string Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 03/82] clk: sunxi-ng: Unregister clocks/resets when unbinding Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 04/82] ARM: dts: sunxi: Fix OPPs node name Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 05/82] arm64: dts: allwinner: h5: Fix GPU thermal zone " Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 06/82] arm64: dts: allwinner: a100: Fix " Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 07/82] staging: wfx: ensure IRQ is ready before enabling it Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 08/82] ARM: dts: BCM5301X: Fix nodes names Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 09/82] ARM: dts: BCM5301X: Fix MDIO mux binding Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 10/82] ARM: dts: NSP: Fix mpcore, mmc node names Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 11/82] arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 12/82] scsi: pm80xx: Fix memory leak during rmmod Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 13/82] scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq() Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 14/82] ASoC: mediatek: mt8195: Add missing of_node_put() Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 15/82] arm64: dts: rockchip: Disable CDN DP on Pinebook Pro Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 16/82] arm64: dts: hisilicon: fix arm, sp805 compatible string Sasha Levin
2021-11-09 22:15   ` [PATCH AUTOSEL 5.15 16/82] arm64: dts: hisilicon: fix arm,sp805 " Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 17/82] arm64: dts: rockchip: add Coresight debug range for RK3399 Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 23:25   ` Brian Norris
2021-11-09 23:25     ` Brian Norris
2021-11-09 23:25     ` Brian Norris
2021-11-10  0:44     ` Sasha Levin
2021-11-10  0:44       ` Sasha Levin
2021-11-10  0:44       ` Sasha Levin
2021-11-10  0:49       ` Brian Norris
2021-11-10  0:49         ` Brian Norris
2021-11-10  0:49         ` Brian Norris
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 18/82] RDMA/bnxt_re: Check if the vlan is valid before reporting Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 19/82] bus: ti-sysc: Add quirk handling for reinit on context lost Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 20/82] bus: ti-sysc: Use context lost quirk for otg Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 21/82] usb: musb: tusb6010: check return value after calling platform_get_resource() Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 22/82] usb: typec: tipd: Remove WARN_ON in tps6598x_block_read Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 23/82] ARM: dts: ux500: Skomer regulator fixes Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 24/82] staging: rtl8723bs: remove possible deadlock when disconnect (v2) Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 25/82] staging: rtl8723bs: remove a second possible deadlock Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 26/82] staging: rtl8723bs: remove a third " Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 27/82] ARM: BCM53016: Specify switch ports for Meraki MR32 Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 28/82] arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 29/82] arm64: dts: qcom: ipq6018: Fix qcom, controlled-remotely property Sasha Levin
2021-11-09 22:15   ` [PATCH AUTOSEL 5.15 29/82] arm64: dts: qcom: ipq6018: Fix qcom,controlled-remotely property Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 30/82] arm64: dts: qcom: ipq8074: Fix qcom, controlled-remotely property Sasha Levin
2021-11-09 22:15   ` [PATCH AUTOSEL 5.15 30/82] arm64: dts: qcom: ipq8074: Fix qcom,controlled-remotely property Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 31/82] arm64: dts: qcom: sdm845: Fix qcom, controlled-remotely property Sasha Levin
2021-11-09 22:15   ` [PATCH AUTOSEL 5.15 31/82] arm64: dts: qcom: sdm845: Fix qcom,controlled-remotely property Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 32/82] arm64: dts: qcom: msm8916: Add unit name for /soc node Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 33/82] arm64: dts: freescale: fix arm, sp805 compatible string Sasha Levin
2021-11-09 22:15   ` [PATCH AUTOSEL 5.15 33/82] arm64: dts: freescale: fix arm,sp805 " Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 34/82] arm64: dts: ls1012a: Add serial alias for ls1012a-rdb Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 35/82] RDMA/rxe: Separate HW and SW l/rkeys Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 36/82] ASoC: SOF: Intel: hda-dai: fix potential locking issue Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 37/82] scsi: core: Fix scsi_mode_sense() buffer length handling Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 38/82] ALSA: usb-audio: disable implicit feedback sync for Behringer UFX1204 and UFX1604 Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 39/82] clk: imx: imx6ul: Move csi_sel mux to correct base register Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 40/82] ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:15 ` [PATCH AUTOSEL 5.15 41/82] ASoC: rt5651: " Sasha Levin
2021-11-09 22:15   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 42/82] ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 43/82] scsi: advansys: Fix kernel pointer leak Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 44/82] scsi: smartpqi: Add controller handshake during kdump Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 45/82] arm64: dts: imx8mm-kontron: Fix reset delays for ethernet PHY Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 46/82] ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 codec Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 47/82] ASoC: Intel: soc-acpi: add missing quirk for TGL SDCA single amp Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 48/82] ASoC: Intel: sof_sdw: add missing quirk for Dell SKU 0A45 Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 49/82] firmware_loader: fix pre-allocated buf built-in firmware use Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 50/82] cpuidle: tegra: Check whether PMC is ready Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 51/82] HID: multitouch: disable sticky fingers for UPERFECT Y Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 52/82] ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 53/82] ARM: dts: omap: fix gpmc,mux-add-data type Sasha Levin
2021-11-09 22:16   ` [PATCH AUTOSEL 5.15 53/82] ARM: dts: omap: fix gpmc, mux-add-data type Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 54/82] usb: host: ohci-tmio: check return value after calling platform_get_resource() Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 55/82] ASoC: rt5682: fix a little pop while playback Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 56/82] ARM: dts: ls1021a: move thermal-zones node out of soc/ Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 57/82] ARM: dts: ls1021a-tsn: use generic "jedec, spi-nor" compatible for flash Sasha Levin
2021-11-09 22:16   ` [PATCH AUTOSEL 5.15 57/82] ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" " Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 58/82] ALSA: ISA: not for M68K Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 59/82] iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 60/82] tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 61/82] MIPS: sni: Fix the build Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 62/82] scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() Sasha Levin
2021-11-09 22:16 ` Sasha Levin [this message]
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 64/82] scsi: target: Fix ordered tag handling Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 65/82] scsi: target: Fix alua_tg_pt_gps_count tracking Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 66/82] iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr() Sasha Levin
2021-11-12 17:33   ` Jonathan Cameron
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 67/82] RDMA/core: Use kvzalloc when allocating the struct ib_port Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 68/82] scsi: lpfc: Fix use-after-free in lpfc_unreg_rpi() routine Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 69/82] scsi: lpfc: Fix link down processing to address NULL pointer dereference Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 70/82] scsi: lpfc: Allow fabric node recovery if recovery is in progress before devloss Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 71/82] memory: tegra20-emc: Add runtime dependency on devfreq governor module Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 72/82] powerpc/5200: dts: fix memory node unit name Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 73/82] arm64: dts: qcom: msm8916: Add CPU ACC and SAW/SPM Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-10  8:40   ` Stephan Gerhold
2021-11-10  8:40     ` Stephan Gerhold
2021-11-12 13:43     ` Sasha Levin
2021-11-12 13:43       ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 74/82] ARM: dts: qcom: fix memory and mdio nodes naming for RB3011 Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 75/82] arm64: dts: qcom: Fix node name of rpm-msg-ram device nodes Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 76/82] ALSA: gus: fix null pointer dereference on pointer block Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 77/82] ALSA: usb-audio: fix null pointer dereference on pointer cs_desc Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 78/82] clk: at91: sama7g5: remove prescaler part of master clock Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 79/82] iommu/dart: Initialize DART_STREAMS_ENABLE Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 80/82] powerpc/dcr: Use cmplwi instead of 3-argument cmpli Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 81/82] powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST Sasha Levin
2021-11-09 22:16   ` Sasha Levin
2021-11-09 22:16 ` [PATCH AUTOSEL 5.15 82/82] HID: playstation: require multicolor LED functionality Sasha Levin

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=20211109221641.1233217-63-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=JBottomley@odin.com \
    --cc=dgilbert@interlog.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=stable@vger.kernel.org \
    --cc=yebin10@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.