From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev,
Andrew Morton <akpm@linux-foundation.org>,
Jason Gunthorpe <jgg@ziepe.ca>,
Simona Vetter <simona.vetter@ffwll.ch>,
Linus Torvalds <torvalds@linux-foundation.org>,
Jann Horn <jannh@google.com>
Subject: [PATCH 6.10 055/121] mm: avoid leaving partial pfn mappings around in error case
Date: Mon, 16 Sep 2024 13:43:49 +0200 [thread overview]
Message-ID: <20240916114230.971579306@linuxfoundation.org> (raw)
In-Reply-To: <20240916114228.914815055@linuxfoundation.org>
6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Linus Torvalds <torvalds@linux-foundation.org>
commit 79a61cc3fc0466ad2b7b89618a6157785f0293b3 upstream.
As Jann points out, PFN mappings are special, because unlike normal
memory mappings, there is no lifetime information associated with the
mapping - it is just a raw mapping of PFNs with no reference counting of
a 'struct page'.
That's all very much intentional, but it does mean that it's easy to
mess up the cleanup in case of errors. Yes, a failed mmap() will always
eventually clean up any partial mappings, but without any explicit
lifetime in the page table mapping itself, it's very easy to do the
error handling in the wrong order.
In particular, it's easy to mistakenly free the physical backing store
before the page tables are actually cleaned up and (temporarily) have
stale dangling PTE entries.
To make this situation less error-prone, just make sure that any partial
pfn mapping is torn down early, before any other error handling.
Reported-and-tested-by: Jann Horn <jannh@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Simona Vetter <simona.vetter@ffwll.ch>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
mm/memory.c | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2581,11 +2581,7 @@ static inline int remap_p4d_range(struct
return 0;
}
-/*
- * Variant of remap_pfn_range that does not call track_pfn_remap. The caller
- * must have pre-validated the caching bits of the pgprot_t.
- */
-int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr,
+static int remap_pfn_range_internal(struct vm_area_struct *vma, unsigned long addr,
unsigned long pfn, unsigned long size, pgprot_t prot)
{
pgd_t *pgd;
@@ -2638,6 +2634,27 @@ int remap_pfn_range_notrack(struct vm_ar
return 0;
}
+/*
+ * Variant of remap_pfn_range that does not call track_pfn_remap. The caller
+ * must have pre-validated the caching bits of the pgprot_t.
+ */
+int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr,
+ unsigned long pfn, unsigned long size, pgprot_t prot)
+{
+ int error = remap_pfn_range_internal(vma, addr, pfn, size, prot);
+
+ if (!error)
+ return 0;
+
+ /*
+ * A partial pfn range mapping is dangerous: it does not
+ * maintain page reference counts, and callers may free
+ * pages due to the error. So zap it early.
+ */
+ zap_page_range_single(vma, addr, size, NULL);
+ return error;
+}
+
/**
* remap_pfn_range - remap kernel memory to userspace
* @vma: user vma to map to
next prev parent reply other threads:[~2024-09-16 12:04 UTC|newest]
Thread overview: 134+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-16 11:42 [PATCH 6.10 000/121] 6.10.11-rc1 review Greg Kroah-Hartman
2024-09-16 11:42 ` [PATCH 6.10 001/121] usb: typec: ucsi: Always set number of alternate modes Greg Kroah-Hartman
2024-09-16 11:42 ` [PATCH 6.10 002/121] usb: typec: ucsi: Fix cable registration Greg Kroah-Hartman
2024-09-16 11:42 ` [PATCH 6.10 003/121] drm/mediatek: Set sensible cursor width/height values to fix crash Greg Kroah-Hartman
2024-09-16 11:42 ` [PATCH 6.10 004/121] ksmbd: override fsids for share path check Greg Kroah-Hartman
2024-09-16 11:42 ` [PATCH 6.10 005/121] ksmbd: override fsids for smb2_query_info() Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 006/121] usbnet: ipheth: remove extraneous rx URB length check Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 007/121] usbnet: ipheth: drop RX URBs with no payload Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 008/121] usbnet: ipheth: do not stop RX on failing RX callback Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 009/121] usbnet: ipheth: fix carrier detection in modes 1 and 4 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 010/121] net: ethernet: use ip_hdrlen() instead of bit shift Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 011/121] drm: panel-orientation-quirks: Add quirk for Ayn Loki Zero Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 012/121] drm: panel-orientation-quirks: Add quirk for Ayn Loki Max Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 013/121] net: phy: vitesse: repair vsc73xx autonegotiation Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 014/121] powerpc/mm: Fix boot warning with hugepages and CONFIG_DEBUG_VIRTUAL Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 015/121] wifi: mt76: mt7921: fix NULL pointer access in mt7921_ipv6_addr_change Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 016/121] drm/amdgpu: Update kmd_fw_shared for VCN5 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 017/121] net: hns3: use correct release function during uninitialization Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 018/121] btrfs: update target inodes ctime on unlink Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 019/121] Input: ads7846 - ratelimit the spi_sync error message Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 020/121] Input: synaptics - enable SMBus for HP Elitebook 840 G2 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 021/121] hid-asus: add ROG Ally X prod ID to quirk list Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 022/121] HID: multitouch: Add support for GT7868Q Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 023/121] Input: edt-ft5x06 - add support for FocalTech FT8201 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 024/121] cgroup/cpuset: Eliminate unncessary sched domains rebuilds in hotplug Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 025/121] scripts: kconfig: merge_config: config files: add a trailing newline Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 026/121] platform/x86: asus-wmi: Add quirk for ROG Ally X Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 027/121] platform/surface: aggregator_registry: Add Support for Surface Pro 10 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 028/121] platform/surface: aggregator_registry: Add support for Surface Laptop Go 3 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 029/121] platform/surface: aggregator_registry: Add support for Surface Laptop Studio 2 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 030/121] platform/surface: aggregator_registry: Add fan and thermal sensor support for Surface Laptop 5 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 031/121] platform/surface: aggregator_registry: Add support for Surface Laptop 6 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 032/121] spi: zynqmp-gqspi: Scale timeout by data size Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 033/121] drm/msm/adreno: Fix error return if missing firmware-name Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 034/121] Input: i8042 - add Fujitsu Lifebook E756 to i8042 quirk table Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 035/121] drm/xe/xe2lpm: Extend Wa_16021639441 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 036/121] drm/xe: fix WA 14018094691 Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 037/121] drm/xe: use devm instead of drmm for managed bo Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 038/121] s390/mm: Prevent lowcore vs identity mapping overlap Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 039/121] s390/mm: Pin identity mapping base to zero Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 040/121] smb/server: fix return value of smb2_open() Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 041/121] NFSv4: Fix clearing of layout segments in layoutreturn Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 042/121] NFS: Avoid unnecessary rescanning of the per-server delegation list Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 043/121] platform/x86: panasonic-laptop: Fix SINF array out of bounds accesses Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 044/121] platform/x86: panasonic-laptop: Allocate 1 entry extra in the sinf array Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 045/121] mptcp: pm: Fix uaf in __timer_delete_sync Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 046/121] selftests: mptcp: join: restrict fullmesh endp on 1st sf Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 047/121] arm64: dts: rockchip: fix eMMC/SPI corruption when audio has been used on RK3399 Puma Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 048/121] arm64: dts: rockchip: override BIOS_DISABLE signal via GPIO hog " Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 049/121] minmax: reduce min/max macro expansion in atomisp driver Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 050/121] net: tighten bad gso csum offset check in virtio_net_hdr Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 051/121] net: libwx: fix number of Rx and Tx descriptors Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 052/121] dm-integrity: fix a race condition when accessing recalc_sector Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 053/121] clocksource: hyper-v: Use lapic timer in a TDX VM without paravisor Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 054/121] x86/hyperv: fix kexec crash due to VP assist page corruption Greg Kroah-Hartman
2024-09-16 11:43 ` Greg Kroah-Hartman [this message]
2024-09-16 11:43 ` [PATCH 6.10 056/121] bcachefs: Fix bch2_extents_match() false positive Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 057/121] bcachefs: Revert lockless buffered IO path Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 058/121] bcachefs: Dont delete open files in online fsck Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 059/121] arm64: dts: rockchip: fix PMIC interrupt pin in pinctrl for ROCK Pi E Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 060/121] firmware: qcom: uefisecapp: Fix deadlock in qcuefi_acquire() Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 061/121] riscv: dts: starfive: jh7110-common: Fix lower rate of CPUfreq by setting PLL0 rate to 1.5GHz Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 062/121] drm/amd/display: Disable error correction if its not supported Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 063/121] drm/amd/display: Fix FEC_READY write on DP LT Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 064/121] eeprom: digsy_mtc: Fix 93xx46 driver probe failure Greg Kroah-Hartman
2024-09-16 11:43 ` [PATCH 6.10 065/121] clk/sophgo: Using BUG() instead of unreachable() in mmux_get_parent_id() Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 066/121] cxl/core: Fix incorrect vendor debug UUID define Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 067/121] cxl: Restore XORd position bits during address translation Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 068/121] selftests/bpf: Support SOCK_STREAM in unix_inet_redir_to_connected() Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 069/121] net: hsr: Send supervisory frames to HSR network with ProxyNodeTable data Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 070/121] net: hsr: remove seqnr_lock Greg Kroah-Hartman
2024-09-16 12:13 ` Sebastian Andrzej Siewior
2024-09-16 19:06 ` Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 071/121] hwmon: (pmbus) Conditionally clear individual status bits for pmbus rev >= 1.2 Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 072/121] ice: Fix lldp packets dropping after changing the number of channels Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 073/121] ice: fix accounting for filters shared by multiple VSIs Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 074/121] ice: fix VSI lists confusion when adding VLANs Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 075/121] igb: Always call igb_xdp_ring_update_tail() under Tx lock Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 076/121] net/mlx5: Update the list of the PCI supported devices Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 077/121] net/mlx5e: Add missing link modes to ptys2ethtool_map Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 078/121] net/mlx5e: Add missing link mode to ptys2ext_ethtool_map Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 079/121] net/mlx5: Explicitly set scheduling element and TSAR type Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 080/121] net/mlx5: Add missing masks and QoS bit masks for scheduling elements Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 081/121] net/mlx5: Correct TASR typo into TSAR Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 082/121] net/mlx5: Verify support for scheduling element and TSAR type Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 083/121] net/mlx5: Fix bridge mode operations when there are no VFs Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 084/121] fou: fix initialization of grc Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 085/121] octeontx2-af: Modify SMQ flush sequence to drop packets Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 086/121] net: ftgmac100: Enable TX interrupt to avoid TX timeout Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 087/121] net: phy: dp83822: Fix NULL pointer dereference on DP83825 devices Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 088/121] selftests: net: csum: Fix checksums for packets with non-zero padding Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 089/121] drivers: perf: Fix smp_processor_id() use in preemptible code Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 090/121] riscv: Disable preemption while handling PR_RISCV_CTX_SW_FENCEI_OFF Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 091/121] netfilter: nft_socket: fix sk refcount leaks Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 092/121] netfilter: nft_socket: make cgroupsv2 matching work with namespaces Greg Kroah-Hartman
2024-09-16 15:33 ` Pablo Neira Ayuso
2024-09-16 19:05 ` Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 093/121] net: hsr: prevent NULL pointer dereference in hsr_proxy_announce() Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 094/121] net: dsa: felix: ignore pending status of TAS module when its disabled Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 095/121] net: dpaa: Pad packets to ETH_ZLEN Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 096/121] netlink: specs: mptcp: fix port endianness Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 097/121] tracing/osnoise: Fix build when timerlat is not enabled Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 098/121] spi: nxp-fspi: fix the KASAN report out-of-bounds bug Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 099/121] soundwire: stream: Revert "soundwire: stream: fix programming slave ports for non-continous port maps" Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 100/121] drm/syncobj: Fix syncobj leak in drm_syncobj_eventfd_ioctl Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 101/121] dma-buf: heaps: Fix off-by-one in CMA heap fault handler Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 102/121] drm/nouveau/fb: restore init() for ramgp102 Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 103/121] drm/amdgpu/atomfirmware: Silence UBSAN warning Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 104/121] drm/amd/display: Avoid race between dcn10_set_drr() and dc_state_destruct() Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 105/121] drm/amd/display: Avoid race between dcn35_set_drr() " Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 106/121] drm/amd/amdgpu: apply command submission parser for JPEG v1 Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 107/121] drm/amd/amdgpu: apply command submission parser for JPEG v2+ Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 108/121] drm/xe/client: fix deadlock in show_meminfo() Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 109/121] drm/xe/client: add missing bo locking " Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 110/121] tracing/kprobes: Fix build error when find_module() is not available Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 111/121] ASoC: Intel: soc-acpi-intel-lnl-match: add missing empty item Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 112/121] ASoC: Intel: soc-acpi-intel-mtl-match: " Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 113/121] spi: geni-qcom: Undo runtime PM changes at driver exit time Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 114/121] spi: geni-qcom: Fix incorrect free_irq() sequence Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 115/121] drm/i915/guc: prevent a possible int overflow in wq offsets Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 116/121] ASoC: codecs: avoid possible garbage value in peb2466_reg_read() Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 117/121] drm/xe/display: fix compat IS_DISPLAY_STEP() range end Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 118/121] cifs: Fix signature miscalculation Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 119/121] pinctrl: meteorlake: Add Arrow Lake-H/U ACPI ID Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 120/121] ASoC: meson: axg-card: fix use-after-free Greg Kroah-Hartman
2024-09-16 11:44 ` [PATCH 6.10 121/121] usb: typec: ucsi: Only set number of plug altmodes after registration Greg Kroah-Hartman
2024-09-16 19:11 ` [PATCH 6.10 000/121] 6.10.11-rc1 review Peter Schneider
2024-09-16 21:13 ` Pavel Machek
2024-09-17 9:56 ` Mark Brown
2024-09-17 10:16 ` Naresh Kamboju
2024-09-17 15:19 ` Jon Hunter
2024-09-17 21:57 ` Florian Fainelli
2024-09-17 22:28 ` Ron Economos
2024-09-18 10:00 ` Kexy Biscuit
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=20240916114230.971579306@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=jannh@google.com \
--cc=jgg@ziepe.ca \
--cc=patches@lists.linux.dev \
--cc=simona.vetter@ffwll.ch \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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).