linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Javed Hasan <jhasan@marvell.com>,
	"Martin K . Petersen" <martin.petersen@oracle.com>,
	Sasha Levin <sashal@kernel.org>,
	linux-scsi@vger.kernel.org
Subject: [PATCH AUTOSEL 5.12 096/102] scsi: qedf: Add check to synchronize abort and flush
Date: Wed, 14 Jul 2021 15:40:29 -0400	[thread overview]
Message-ID: <20210714194036.53141-96-sashal@kernel.org> (raw)
In-Reply-To: <20210714194036.53141-1-sashal@kernel.org>

From: Javed Hasan <jhasan@marvell.com>

[ Upstream commit df99446d5c2a63dc6e6920c8090da0e9da6539d5 ]

A race condition was observed between qedf_cleanup_fcport() and
qedf_process_error_detect()->qedf_initiate_abts():

 [2069091.203145] BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
 [2069091.213100] IP: [<ffffffffc0666cc6>] qedf_process_error_detect+0x96/0x130 [qedf]
 [2069091.223391] PGD 1943049067 PUD 194304e067 PMD 0
 [2069091.233420] Oops: 0000 [#1] SMP
 [2069091.361820] CPU: 1 PID: 14751 Comm: kworker/1:46 Kdump: loaded Tainted: P           OE  ------------   3.10.0-1160.25.1.el7.x86_64 #1
 [2069091.388474] Hardware name: HPE Synergy 480 Gen10/Synergy 480 Gen10 Compute Module, BIOS I42 04/08/2020
 [2069091.402148] Workqueue: qedf_io_wq qedf_fp_io_handler [qedf]
 [2069091.415780] task: ffff9bb9f5190000 ti: ffff9bacaef9c000 task.ti: ffff9bacaef9c000
 [2069091.429590] RIP: 0010:[<ffffffffc0666cc6>]  [<ffffffffc0666cc6>] qedf_process_error_detect+0x96/0x130 [qedf]
 [2069091.443666] RSP: 0018:ffff9bacaef9fdb8  EFLAGS: 00010246
 [2069091.457692] RAX: 0000000000000000 RBX: ffff9bbbbbfb18a0 RCX: ffffffffc0672310
 [2069091.471997] RDX: 00000000000005de RSI: ffffffffc066e7f0 RDI: ffff9beb3f4538d8
 [2069091.486130] RBP: ffff9bacaef9fdd8 R08: 0000000000006000 R09: 0000000000006000
 [2069091.500321] R10: 0000000000001551 R11: ffffb582996ffff8 R12: ffffb5829b39cc18
 [2069091.514779] R13: ffff9badab380c28 R14: ffffd5827f643900 R15: 0000000000000040
 [2069091.529472] FS:  0000000000000000(0000) GS:ffff9beb3f440000(0000) knlGS:0000000000000000
 [2069091.543926] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
 [2069091.558942] CR2: 0000000000000030 CR3: 000000193b9a2000 CR4: 00000000007607e0
 [2069091.573424] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
 [2069091.587876] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
 [2069091.602007] PKRU: 00000000
 [2069091.616010] Call Trace:
 [2069091.629902]  [<ffffffffc0663969>] qedf_process_cqe+0x109/0x2e0 [qedf]
 [2069091.643941]  [<ffffffffc0663b66>] qedf_fp_io_handler+0x26/0x60 [qedf]
 [2069091.657948]  [<ffffffff85ebddcf>] process_one_work+0x17f/0x440
 [2069091.672111]  [<ffffffff85ebeee6>] worker_thread+0x126/0x3c0
 [2069091.686057]  [<ffffffff85ebedc0>] ? manage_workers.isra.26+0x2a0/0x2a0
 [2069091.700033]  [<ffffffff85ec5da1>] kthread+0xd1/0xe0
 [2069091.713891]  [<ffffffff85ec5cd0>] ? insert_kthread_work+0x40/0x40

Add check in qedf_process_error_detect(). When flush is active, let the
cmds be completed from the cleanup contex.

Link: https://lore.kernel.org/r/20210624171802.598-1-jhasan@marvell.com
Signed-off-by: Javed Hasan <jhasan@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/qedf/qedf_io.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/qedf/qedf_io.c b/drivers/scsi/qedf/qedf_io.c
index 4869ef813dc4..63f99f4eeed9 100644
--- a/drivers/scsi/qedf/qedf_io.c
+++ b/drivers/scsi/qedf/qedf_io.c
@@ -1520,9 +1520,19 @@ void qedf_process_error_detect(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
 {
 	int rval;
 
+	if (io_req == NULL) {
+		QEDF_INFO(NULL, QEDF_LOG_IO, "io_req is NULL.\n");
+		return;
+	}
+
+	if (io_req->fcport == NULL) {
+		QEDF_INFO(NULL, QEDF_LOG_IO, "fcport is NULL.\n");
+		return;
+	}
+
 	if (!cqe) {
 		QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_IO,
-			  "cqe is NULL for io_req %p\n", io_req);
+			"cqe is NULL for io_req %p\n", io_req);
 		return;
 	}
 
@@ -1538,6 +1548,16 @@ void qedf_process_error_detect(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
 		  le32_to_cpu(cqe->cqe_info.err_info.rx_buf_off),
 		  le32_to_cpu(cqe->cqe_info.err_info.rx_id));
 
+	/* When flush is active, let the cmds be flushed out from the cleanup context */
+	if (test_bit(QEDF_RPORT_IN_TARGET_RESET, &io_req->fcport->flags) ||
+		(test_bit(QEDF_RPORT_IN_LUN_RESET, &io_req->fcport->flags) &&
+		 io_req->sc_cmd->device->lun == (u64)io_req->fcport->lun_reset_lun)) {
+		QEDF_ERR(&qedf->dbg_ctx,
+			"Dropping EQE for xid=0x%x as fcport is flushing",
+			io_req->xid);
+		return;
+	}
+
 	if (qedf->stop_io_on_error) {
 		qedf_stop_all_io(qedf);
 		return;
-- 
2.30.2


  parent reply	other threads:[~2021-07-14 19:48 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-14 19:38 [PATCH AUTOSEL 5.12 001/102] ARM: dts: gemini: rename mdio to the right name Sasha Levin
2021-07-14 19:38 ` [PATCH AUTOSEL 5.12 002/102] ARM: dts: gemini: add device_type on pci Sasha Levin
2021-07-14 19:38 ` [PATCH AUTOSEL 5.12 003/102] ARM: dts: rockchip: Fix thermal sensor cells o rk322x Sasha Levin
2021-07-14 19:38 ` [PATCH AUTOSEL 5.12 004/102] ARM: dts: rockchip: fix pinctrl sleep nodename for rk3036-kylin and rk3288 Sasha Levin
2021-07-14 19:38 ` [PATCH AUTOSEL 5.12 005/102] arm64: dts: rockchip: Use only supported PCIe link speed on rk3399 Sasha Levin
2021-07-14 19:38 ` [PATCH AUTOSEL 5.12 006/102] arm64: dts: rockchip: fix pinctrl sleep nodename for rk3399.dtsi Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 007/102] ARM: dts: rockchip: Fix the timer clocks order Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 008/102] ARM: dts: rockchip: Fix IOMMU nodes properties on rk322x Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 009/102] ARM: dts: rockchip: Fix power-controller node names for rk3066a Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 010/102] ARM: dts: rockchip: Fix power-controller node names for rk3188 Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 011/102] ARM: dts: rockchip: Fix power-controller node names for rk3288 Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 012/102] arm64: dts: rockchip: Fix power-controller node names for px30 Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 013/102] arm64: dts: rockchip: Fix power-controller node names for rk3328 Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 014/102] arm64: dts: rockchip: Fix power-controller node names for rk3399 Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 015/102] reset: ti-syscon: fix to_ti_syscon_reset_data macro Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 016/102] ARM: dts: BCM5301X: Fix NAND nodes names Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 017/102] ARM: brcmstb: dts: fix " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 018/102] ARM: Cygnus: " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 019/102] ARM: NSP: " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 020/102] ARM: dts: BCM63xx: Fix " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 021/102] ARM: dts: Hurricane 2: " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 022/102] ARM: dts: BCM5301X: Fix pinmux subnodes names Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 023/102] soc: bcm: brcmstb: remove unused variable 'brcmstb_machine_match' Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 024/102] ARM: dts: imx25-pinfunc: Fix gpio function name for pads GPIO_[A-F] Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 025/102] ARM: dts: exynos: align Broadcom WiFi with dtschema Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 026/102] soc: mediatek: add missing MODULE_DEVICE_TABLE Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 027/102] ARM: dts: imx6: phyFLEX: Fix UART hardware flow control Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 028/102] ARM: imx: pm-imx5: Fix references to imx5_cpu_suspend_info Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 029/102] arm64: dts: rockchip: fix regulator-gpio states array Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 030/102] ARM: dts: ux500: Fix interrupt cells Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 031/102] ARM: dts: ux500: Rename gpio-controller node Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 032/102] ARM: dts: ux500: Fix orientation of accelerometer Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 033/102] ARM: dts: ux500: Fix some compatible strings Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 034/102] ARM: dts: imx6dl-riotboard: configure PHY clock and set proper EEE value Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 035/102] ARM: dts: ux500: Fix orientation of Janice accelerometer Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 036/102] rtc: mxc_v2: add missing MODULE_DEVICE_TABLE Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 037/102] arm64: dts: renesas: beacon: Fix USB extal reference Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 038/102] arm64: dts: renesas: beacon: Fix USB ref clock references Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 039/102] kbuild: sink stdout from cmd for silent build Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 040/102] ARM: dts: am335x: align GPIO hog names with dt-schema Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 041/102] ARM: dts: am437x: align gpio " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 042/102] ARM: dts: omap3: " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 043/102] ARM: dts: omap5-board-common: " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 044/102] ARM: dts: dra7x-evm: Align GPIO " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 045/102] ARM: dts: am57xx-cl-som-am57x: fix ti,no-reset-on-init flag for gpios Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 046/102] ARM: dts: am437x-gp-evm: " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 047/102] ARM: dts: am335x: " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 048/102] ARM: dts: OMAP2+: Replace underscores in sub-mailbox node names Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 049/102] arm64: tegra: Add PMU node for Tegra194 Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 050/102] arm64: dts: ti: k3-am654x/j721e/j7200-common-proc-board: Fix MCU_RGMII1_TXC direction Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 051/102] ARM: tegra: wm8903: Fix polarity of headphones-detection GPIO in device-trees Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 052/102] ARM: tegra: nexus7: Correct 3v3 regulator GPIO of PM269 variant Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 053/102] arm64: dts: qcom: msm8996: Make CPUCC actually probe (and work) Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 054/102] arm64: dts: qcom: sc7180: Move rmtfs memory region Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 055/102] ARM: dts: stm32: Remove extra size-cells on dhcom-pdk2 Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 056/102] ARM: dts: stm32: Fix touchscreen node " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 057/102] ARM: dts: stm32: fix stm32mp157c-odyssey card detect pin Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 058/102] ARM: dts: stm32: fix gpio-keys node on STM32 MCU boards Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 059/102] ARM: dts: stm32: fix RCC node name on stm32f429 MCU Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 060/102] ARM: dts: stm32: fix timer nodes on STM32 MCU to prevent warnings Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 061/102] memory: tegra: Fix compilation warnings on 64bit platforms Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 062/102] firmware: arm_scmi: Add SMCCC discovery dependency in Kconfig Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 063/102] firmware: arm_scmi: Fix the build when CONFIG_MAILBOX is not selected Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 064/102] ARM: dts: bcm283x: Fix up MMC node names Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 065/102] ARM: dts: bcm283x: Fix up GPIO LED " Sasha Levin
2021-07-14 19:39 ` [PATCH AUTOSEL 5.12 066/102] i3c: master: svc: drop free_irq of devm_request_irq allocated irq Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 067/102] arm64: dts: juno: Update SCPI nodes as per the YAML schema Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 068/102] ARM: dts: rockchip: fix supply properties in io-domains nodes Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 069/102] ARM: dts: stm32: fix i2c node name on stm32f746 to prevent warnings Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 070/102] ARM: dts: stm32: move stmmac axi config in ethernet node on stm32mp15 Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 071/102] ARM: dts: stm32: fix the Odyssey SoM eMMC VQMMC supply Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 072/102] ARM: dts: stm32: Drop unused linux,wakeup from touchscreen node on DHCOM SoM Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 073/102] ARM: dts: stm32: Rename eth@N to ethernet@N " Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 074/102] ARM: dts: stm32: Rename spi-flash/mx66l51235l@N to flash@N " Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 075/102] ARM: dts: stm32: fix stpmic node for stm32mp1 boards Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 076/102] ARM: OMAP2+: Block suspend for am3 and am4 if PM is not configured Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 077/102] soc/tegra: fuse: Fix Tegra234-only builds Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 078/102] firmware: tegra: bpmp: " Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 079/102] arm64: dts: rockchip: Update RK3399 PCI host bridge window to 32-bit address memory Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 080/102] arm64: dts: ls208xa: remove bus-num from dspi node Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 081/102] arm64: dts: imx8mn-beacon-som: Assign PMIC clock Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 082/102] arm64: dts: imx8mq: assign PCIe clocks Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 083/102] thermal/core: Correct function name thermal_zone_device_unregister() Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 084/102] thermal/drivers/rcar_gen3_thermal: Do not shadow rcar_gen3_ths_tj_1 Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 085/102] thermal/drivers/imx_sc: Add missing of_node_put for loop iteration Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 086/102] thermal/drivers/sprd: " Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 087/102] arm64: dts: qcom: sm8250: Fix pcie2_lane unit address Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 088/102] arm64: dts: qcom: sm8150: Disable Adreno and modem by default Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 089/102] kbuild: mkcompile_h: consider timestamp if KBUILD_BUILD_TIMESTAMP is set Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 090/102] arch/arm64/boot/dts/marvell: fix NAND partitioning scheme Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 091/102] rtc: max77686: Do not enforce (incorrect) interrupt trigger type Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 092/102] scsi: aic7xxx: Fix unintentional sign extension issue on left shift of u8 Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 093/102] scsi: libsas: Add LUN number check in .slave_alloc callback Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 094/102] scsi: be2iscsi: Fix some missing space in some messages Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 095/102] scsi: libfc: Fix array index out of bound exception Sasha Levin
2021-07-14 19:40 ` Sasha Levin [this message]
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 097/102] sched/fair: Fix CFS bandwidth hrtimer expiry type Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 098/102] perf/x86/intel/uncore: Clean up error handling path of iio mapping Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 099/102] thermal/core/thermal_of: Stop zone device before unregistering it Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 100/102] s390/traps: do not test MONITOR CALL without CONFIG_BUG Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 101/102] s390: introduce proper type handling call_on_stack() macro Sasha Levin
2021-07-14 19:40 ` [PATCH AUTOSEL 5.12 102/102] cifs: prevent NULL deref in cifs_compose_mount_options() 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=20210714194036.53141-96-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=jhasan@marvell.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --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).