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, Oleg Drokin <green@linuxhacker.ru>
Subject: [PATCH 4.7 130/143] staging/lustre/llite: Close atomic_open race with several openers
Date: Mon,  5 Sep 2016 18:45:06 +0200	[thread overview]
Message-ID: <20160905164436.117303458@linuxfoundation.org> (raw)
In-Reply-To: <20160905164430.593075551@linuxfoundation.org>

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

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

From: Oleg Drokin <green@linuxhacker.ru>

commit 99f1c013194e64d4b67d5d318148303b0e1585e1 upstream.

Right now, if it's an open of a negative dentry, a race is possible
with several openers who all try to instantiate/rehash the same
dentry and would hit a BUG_ON in d_add.
But in fact if we got a negative dentry in atomic_open, that means
we just revalidated it so no point in talking to MDS at all,
just return ENOENT and make the race go away completely.

Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/staging/lustre/lustre/llite/namei.c |   43 +++++++++++++++-------------
 1 file changed, 24 insertions(+), 19 deletions(-)

--- a/drivers/staging/lustre/lustre/llite/namei.c
+++ b/drivers/staging/lustre/lustre/llite/namei.c
@@ -391,6 +391,7 @@ static int ll_lookup_it_finish(struct pt
 	struct inode *inode = NULL;
 	__u64 bits = 0;
 	int rc = 0;
+	struct dentry *alias;
 
 	/* NB 1 request reference will be taken away by ll_intent_lock()
 	 * when I return
@@ -415,26 +416,12 @@ static int ll_lookup_it_finish(struct pt
 		 */
 	}
 
-	/* Only hash *de if it is unhashed (new dentry).
-	 * Atoimc_open may passing hashed dentries for open.
-	 */
-	if (d_unhashed(*de)) {
-		struct dentry *alias;
-
-		alias = ll_splice_alias(inode, *de);
-		if (IS_ERR(alias)) {
-			rc = PTR_ERR(alias);
-			goto out;
-		}
-		*de = alias;
-	} else if (!it_disposition(it, DISP_LOOKUP_NEG)  &&
-		   !it_disposition(it, DISP_OPEN_CREATE)) {
-		/* With DISP_OPEN_CREATE dentry will be
-		 * instantiated in ll_create_it.
-		 */
-		LASSERT(!d_inode(*de));
-		d_instantiate(*de, inode);
+	alias = ll_splice_alias(inode, *de);
+	if (IS_ERR(alias)) {
+		rc = PTR_ERR(alias);
+		goto out;
 	}
+	*de = alias;
 
 	if (!it_disposition(it, DISP_LOOKUP_NEG)) {
 		/* we have lookup look - unhide dentry */
@@ -590,6 +577,24 @@ static int ll_atomic_open(struct inode *
 	       dentry, PFID(ll_inode2fid(dir)), dir, file, open_flags, mode,
 	       *opened);
 
+	/* Only negative dentries enter here */
+	LASSERT(!d_inode(dentry));
+
+	if (!d_in_lookup(dentry)) {
+		/* A valid negative dentry that just passed revalidation,
+		 * there's little point to try and open it server-side,
+		 * even though there's a minuscle chance it might succeed.
+		 * Either way it's a valid race to just return -ENOENT here.
+		 */
+		if (!(open_flags & O_CREAT))
+			return -ENOENT;
+
+		/* Otherwise we just unhash it to be rehashed afresh via
+		 * lookup if necessary
+		 */
+		d_drop(dentry);
+	}
+
 	it = kzalloc(sizeof(*it), GFP_NOFS);
 	if (!it)
 		return -ENOMEM;

  parent reply	other threads:[~2016-09-05 17:04 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20160905164741uscas1p251c4053d2e2bfa59be6c957f34f7da84@uscas1p2.samsung.com>
2016-09-05 16:42 ` [PATCH 4.7 000/143] 4.7.3-stable review Greg Kroah-Hartman
2016-09-05 16:42   ` [PATCH 4.7 002/143] uprobes/x86: Fix RIP-relative handling of EVEX-encoded instructions Greg Kroah-Hartman
2016-09-05 16:42   ` [PATCH 4.7 003/143] x86/platform/uv: Skip UV runtime services mapping in the efi_runtime_disabled case Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 004/143] tools/testing/nvdimm: fix SIGTERM vs hotplug crash Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 005/143] SUNRPC: Handle EADDRNOTAVAIL on connection failures Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 006/143] SUNRPC: allow for upcalls for same uid but different gss service Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 007/143] ALSA: usb-audio: Add a sample rate quirk for Creative Live! Cam Socialize HD (VF0610) Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 008/143] ALSA: usb-audio: Add quirk for ELP HD USB Camera Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 009/143] ALSA: hda - Manage power well properly for resume Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 010/143] arm64: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 011/143] efi/capsule: Allocate whole capsule into virtual memory Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 012/143] parisc: Fix order of EREFUSED define in errno.h Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 013/143] virtio: fix memory leak in virtqueue_add() Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 014/143] mm/slub.c: run free_partial() outside of the kmem_cache_node->list_lock Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 015/143] vfio/pci: Fix NULL pointer oops in error interrupt setup handling Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 016/143] tracing: Fix tick_stop tracepoint symbols for user export Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 017/143] perf intel-pt: Fix occasional decoding errors when tracing system-wide Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 018/143] libnvdimm, nd_blk: mask off reserved status bits Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 019/143] ACPI: CPPC: Return error if _CPC is invalid on a CPU Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 020/143] ACPI / CPPC: Prevent cpc_desc_ptr points to the invalid data Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 021/143] um: Dont discard .text.exit section Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 022/143] genirq/msi: Remove unused MSI_FLAG_IDENTITY_MAP Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 023/143] genirq/msi: Make sure PCI MSIs are activated early Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 024/143] crypto: caam - fix non-hmac hashes Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 027/143] parisc: Fix automatic selection of cr16 clocksource Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 028/143] usb: ehci: change order of register cleanup during shutdown Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 029/143] usb: devio, do not warn when allocation fails Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 030/143] usb: misc: usbtest: add fix for driver hang Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 031/143] usb: misc: usbtest: usbtest_do_ioctl may return positive integer Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 032/143] usb: dwc3: pci: add Intel Kabylake PCI ID Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 033/143] usb: dwc3: gadget: increment request->actual once Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 034/143] usb: dwc3: gadget: fix for short pkts during chained xfers Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 035/143] usb: dwc3: gadget: always cleanup all TRBs Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 036/143] usb: hub: Fix unbalanced reference count/memory leak/deadlocks Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 037/143] USB: hub: fix up early-exit pathway in hub_activate Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 038/143] USB: hub: change the locking " Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 039/143] usb: renesas_usbhs: Fix receiving data corrupt on R-Car Gen3 with dmac Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 040/143] usb: renesas_usbhs: clear the BRDYSTS in usbhsg_ep_enable() Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 041/143] usb: renesas_usbhs: Use dmac only if the pipe type is bulk Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 042/143] clk: renesas: r8a7795: Fix SD clocks Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 043/143] USB: validate wMaxPacketValue entries in endpoint descriptors Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 044/143] usb: gadget: fsl_qe_udc: off by one in setup_received_handle() Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 046/143] xhci: always handle "Command Ring Stopped" events Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 047/143] usb: xhci: Fix panic if disconnect Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 048/143] xhci: dont dereference a xhci member after removing xhci Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 049/143] USB: serial: fix memleak in driver-registration error path Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 050/143] USB: serial: option: add D-Link DWM-156/A3 Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 051/143] USB: serial: option: add support for Telit LE920A4 Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 052/143] USB: serial: ftdi_sio: add device ID for WICED USB UART dev board Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 054/143] uprobes: Fix the memcg accounting Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 055/143] perf symbols: Fix annotation of objects with debuginfo files Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 056/143] perf/core: Fix event_function_local() Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 057/143] perf tools mem: Fix -t store option for record command Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 058/143] iommu/dma: Dont put uninitialised IOVA domains Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 059/143] iommu/io-pgtable-arm-v7s: Fix attributes when splitting blocks Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 060/143] iommu/arm-smmu: Fix CMDQ error handling Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 061/143] iommu/arm-smmu: Disable stalling faults for all endpoints Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 062/143] iommu/arm-smmu: Dont BUG() if we find aborting STEs with disable_bypass Greg Kroah-Hartman
2016-09-05 16:43   ` [PATCH 4.7 063/143] pinctrl: meson: Drop pinctrl_unregister for devm_ registered device Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 065/143] i2c: mux: demux-pinctrl: properly roll back when adding adapter fails Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 066/143] EDAC, sb_edac: Fix channel reporting on Knights Landing Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 067/143] s390/dasd: fix hanging device after clear subchannel Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 068/143] mac80211: fix purging multicast PS buffer queue Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 069/143] arm64: kernel: avoid literal load of virtual address with MMU off Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 070/143] arm64: avoid TLB conflict with CONFIG_RANDOMIZE_BASE Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 071/143] arm64: dts: rockchip: add reset saradc node for rk3368 SoCs Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 072/143] arm64: kernel: Fix unmasked debug exceptions when restoring mdscr_el1 Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 073/143] of: fix reference counting in of_graph_get_endpoint_by_regs Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 074/143] sched/cputime: Fix NO_HZ_FULL getrusage() monotonicity regression Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 075/143] iio: fix sched WARNING "do not call blocking ops when !TASK_RUNNING" Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 081/143] drm/amd/amdgpu: sdma resume fail during S4 on CI Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 082/143] drm/amd/amdgpu: compute ring test " Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 087/143] drm/i915: Acquire audio powerwell for HD-Audio registers Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 088/143] drm/i915: fix aliasing_ppgtt leak Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 093/143] ARC: use correct offset in pt_regs for saving/restoring user mode r25 Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 095/143] ARC: Call trace_hardirqs_on() before enabling irqs Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 096/143] ARC: Elide redundant setup of DMA callbacks Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 097/143] aacraid: Check size values after double-fetch from user Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 098/143] mfd: cros_ec: Add cros_ec_cmd_xfer_status() helper Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 099/143] i2c: cros-ec-tunnel: Fix usage of cros_ec_cmd_xfer() Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 100/143] cdc-acm: fix wrong pipe type on rx interrupt xfers Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 101/143] mpt3sas: Fix resume on WarpDrive flash cards Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 102/143] megaraid_sas: Fix probing cards without io port Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 103/143] usb: renesas_usbhs: gadget: fix return value check in usbhs_mod_gadget_probe() Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 104/143] dm round robin: do not use this_cpu_ptr() without having preemption disabled Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 105/143] gpio: Fix OF build problem on UM Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 106/143] gpio: max730x: set gpiochip data pointer before using it Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 107/143] fs/seq_file: fix out-of-bounds read Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 108/143] soft_dirty: fix soft_dirty during THP split Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 109/143] dax: fix device-dax region base Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 110/143] mm: silently skip readahead for DAX inodes Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 111/143] btrfs: waiting on qgroup rescan should not always be interruptible Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 112/143] btrfs: properly track when rescan worker is running Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 113/143] btrfs: dont create or leak aliased root while cleaning up orphans Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 114/143] Revert "floppy: fix open(O_ACCMODE) for ioctl-only open" Greg Kroah-Hartman
2016-09-07 16:53     ` Mark Hounschell
2016-09-08  6:51       ` Greg Kroah-Hartman
2016-09-08  8:05         ` Jiri Kosina
2016-09-09 11:38           ` Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 115/143] Input: tegra-kbc - fix inverted reset logic Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 116/143] Input: synaptics-rmi4 - fix register descriptor subpacket map construction Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 117/143] Input: i8042 - break load dependency between atkbd/psmouse and i8042 Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 118/143] Input: i8042 - set up shared ps2_cmd_mutex for AUX ports Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 119/143] crypto: nx - off by one bug in nx_of_update_msc() Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 120/143] crypto: qat - fix aes-xts key sizes Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 121/143] dmaengine: usb-dmac: check CHCR.DE bit in usb_dmac_isr_channel() Greg Kroah-Hartman
2016-09-05 16:44   ` [PATCH 4.7 123/143] usb: chipidea: udc: dont touch DP when controller is in host mode Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 124/143] USB: fix typo in wMaxPacketSize validation Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 125/143] usb: gadget: udc: core: dont starve DMA resources Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 126/143] USB: serial: mos7720: fix non-atomic allocation in write path Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 127/143] USB: serial: mos7840: " Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 128/143] USB: serial: option: add WeTelecom WM-D200 Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 129/143] USB: serial: option: add WeTelecom 0x6802 and 0x6803 products Greg Kroah-Hartman
2016-09-05 16:45   ` Greg Kroah-Hartman [this message]
2016-09-05 16:45   ` [PATCH 4.7 131/143] staging: comedi: daqboard2000: bug fix board type matching code Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 133/143] staging: comedi: ni_mio_common: fix AO inttrig backwards compatibility Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 135/143] ACPI / drivers: fix typo in ACPI_DECLARE_PROBE_ENTRY macro Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 136/143] ACPI / drivers: replace acpi_probe_lock spinlock with mutex Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 137/143] ALSA: line6: Remove double line6_pcm_release() after failed acquire Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 138/143] ALSA: line6: Give up on the lock while URBs are released Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 139/143] ALSA: line6: Fix POD sysfs attributes segfault Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 140/143] hwmon: (it87) Add missing sysfs attribute group terminator Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 141/143] hwmon: (iio_hwmon) fix memory leak in name attribute Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 142/143] sysfs: correctly handle read offset on PREALLOC attrs Greg Kroah-Hartman
2016-09-05 16:45   ` [PATCH 4.7 143/143] SUNRPC: Fix infinite looping in rpc_clnt_iterate_for_each_xprt Greg Kroah-Hartman
2016-09-05 17:46   ` [PATCH 4.7 000/143] 4.7.3-stable review Markus Trippelsdorf
2016-09-05 18:48     ` Greg Kroah-Hartman
2016-09-06 17:04   ` Guenter Roeck
2016-09-07  6:29     ` Greg Kroah-Hartman
2016-09-06 18:02   ` Shuah Khan
2016-09-07  6:29     ` Greg Kroah-Hartman
2016-09-07 20:59   ` Levin, Alexander
2016-09-08  6:52     ` Greg Kroah-Hartman
2016-09-08 10:58       ` Johannes Stezenbach
2016-09-09 14:11         ` Greg Kroah-Hartman
2016-10-10  8:41     ` Greg Kroah-Hartman

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=20160905164436.117303458@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=green@linuxhacker.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.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).