From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
"Borislav Petkov (AMD)" <bp@alien8.de>
Subject: [PATCH 5.10 089/122] x86/alternative: Make custom return thunk unconditional
Date: Tue, 27 Feb 2024 14:27:30 +0100 [thread overview]
Message-ID: <20240227131601.618509293@linuxfoundation.org> (raw)
In-Reply-To: <20240227131558.694096204@linuxfoundation.org>
5.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Zijlstra <peterz@infradead.org>
Upstream commit: 095b8303f3835c68ac4a8b6d754ca1c3b6230711
There is infrastructure to rewrite return thunks to point to any
random thunk one desires, unwrap that from CALL_THUNKS, which up to
now was the sole user of that.
[ bp: Make the thunks visible on 32-bit and add ifdeffery for the
32-bit builds. ]
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20230814121148.775293785@infradead.org
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/include/asm/nospec-branch.h | 8 ++++----
arch/x86/kernel/alternative.c | 4 ----
arch/x86/kernel/cpu/bugs.c | 2 ++
3 files changed, 6 insertions(+), 8 deletions(-)
--- a/arch/x86/include/asm/nospec-branch.h
+++ b/arch/x86/include/asm/nospec-branch.h
@@ -190,7 +190,11 @@
_ASM_PTR " 999b\n\t" \
".popsection\n\t"
+#ifdef CONFIG_RETHUNK
extern void __x86_return_thunk(void);
+#else
+static inline void __x86_return_thunk(void) {}
+#endif
extern void retbleed_return_thunk(void);
extern void srso_return_thunk(void);
@@ -203,11 +207,7 @@ extern void srso_alias_untrain_ret(void)
extern void entry_untrain_ret(void);
extern void entry_ibpb(void);
-#ifdef CONFIG_CALL_THUNKS
extern void (*x86_return_thunk)(void);
-#else
-#define x86_return_thunk (&__x86_return_thunk)
-#endif
#ifdef CONFIG_RETPOLINE
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -677,10 +677,6 @@ void __init_or_module noinline apply_ret
#ifdef CONFIG_RETHUNK
-#ifdef CONFIG_CALL_THUNKS
-void (*x86_return_thunk)(void) __ro_after_init = &__x86_return_thunk;
-#endif
-
/*
* Rewrite the compiler generated return thunk tail-calls.
*
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -61,6 +61,8 @@ EXPORT_SYMBOL_GPL(x86_pred_cmd);
static DEFINE_MUTEX(spec_ctrl_mutex);
+void (*x86_return_thunk)(void) __ro_after_init = &__x86_return_thunk;
+
/* Update SPEC_CTRL MSR and its cached copy unconditionally */
static void update_spec_ctrl(u64 val)
{
next prev parent reply other threads:[~2024-02-27 14:29 UTC|newest]
Thread overview: 140+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-27 13:26 [PATCH 5.10 000/122] 5.10.211-rc1 review Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 001/122] net/sched: Retire CBQ qdisc Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 002/122] net/sched: Retire ATM qdisc Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 003/122] net/sched: Retire dsmark qdisc Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 004/122] smb: client: fix OOB in receive_encrypted_standard() Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 005/122] smb: client: fix potential OOBs in smb2_parse_contexts() Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 006/122] smb: client: fix parsing of SMB3.1.1 POSIX create context Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 007/122] sched/rt: sysctl_sched_rr_timeslice show default timeslice after reset Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 008/122] userfaultfd: fix mmap_changing checking in mfill_atomic_hugetlb Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 009/122] zonefs: Improve error handling Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 010/122] sched/rt: Fix sysctl_sched_rr_timeslice intial value Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 011/122] sched/rt: Disallow writing invalid values to sched_rt_period_us Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 012/122] scsi: target: core: Add TMF to tmr_list handling Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 013/122] dmaengine: shdma: increase size of dev_id Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 014/122] dmaengine: fsl-qdma: increase size of irq_name Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 015/122] wifi: cfg80211: fix missing interfaces when dumping Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 016/122] wifi: mac80211: fix race condition on enabling fast-xmit Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 017/122] fbdev: savage: Error out if pixclock equals zero Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 018/122] fbdev: sis: " Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 019/122] spi: hisi-sfc-v3xx: Return IRQ_NONE if no interrupts were detected Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 020/122] ahci: asm1166: correct count of reported ports Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 021/122] ahci: add 43-bit DMA address quirk for ASMedia ASM1061 controllers Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 022/122] ext4: avoid allocating blocks from corrupted group in ext4_mb_try_best_found() Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 023/122] ext4: avoid allocating blocks from corrupted group in ext4_mb_find_by_goal() Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 024/122] dmaengine: ti: edma: Add some null pointer checks to the edma_probe Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 025/122] regulator: pwm-regulator: Add validity checks in continuous .get_voltage Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 026/122] nvmet-tcp: fix nvme tcp ida memory leak Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 027/122] ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 028/122] spi: sh-msiof: avoid integer overflow in constants Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 029/122] netfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in sctp_new Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 030/122] nvme-fc: do not wait in vain when unloading module Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 031/122] nvmet-fcloop: swap the list_add_tail arguments Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 032/122] nvmet-fc: release reference on target port Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 033/122] nvmet-fc: abort command when there is no binding Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 034/122] ext4: correct the hole length returned by ext4_map_blocks() Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 035/122] Input: i8042 - add Fujitsu Lifebook U728 to i8042 quirk table Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 036/122] efi: runtime: Fix potential overflow of soft-reserved region size Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 037/122] efi: Dont add memblocks for soft-reserved memory Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 038/122] hwmon: (coretemp) Enlarge per package core count limit Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 039/122] scsi: lpfc: Use unsigned type for num_sge Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 040/122] firewire: core: send bus reset promptly on gap count error Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 041/122] virtio-blk: Ensure no requests in virtqueues before deleting vqs Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 042/122] pmdomain: renesas: r8a77980-sysc: CR7 must be always on Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 043/122] ARM: dts: BCM53573: Drop nonexistent "default-off" LED trigger Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 044/122] irqchip/mips-gic: Dont touch vl_map if a local interrupt is not routable Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 045/122] ARM: dts: imx: Set default tuning step for imx6sx usdhc Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 046/122] ASoC: fsl_micfil: register platform component before registering cpu dai Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 047/122] media: av7110: prevent underflow in write_ts_to_decoder() Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 048/122] hvc/xen: prevent concurrent accesses to the shared ring Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 049/122] hsr: Avoid double remove of a node Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 050/122] x86/uaccess: Implement macros for CMPXCHG on user addresses Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 051/122] seccomp: Invalidate seccomp mode to catch death failures Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 052/122] block: ataflop: fix breakage introduced at blk-mq refactoring Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 053/122] powerpc/watchpoint: Workaround P10 DD1 issue with VSX-32 byte instructions Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 054/122] powerpc/watchpoints: Annotate atomic context in more places Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 055/122] cifs: add a warning when the in-flight count goes negative Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 056/122] mtd: spinand: macronix: Add support for MX35LFxGE4AD Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 057/122] ASoC: Intel: boards: harden codec property handling Greg Kroah-Hartman
2024-02-27 13:26 ` [PATCH 5.10 058/122] ASoC: Intel: boards: get codec device with ACPI instead of bus search Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 059/122] ASoC: Intel: bytcr_rt5651: Drop reference count of ACPI device after use Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 060/122] task_stack, x86/cea: Force-inline stack helpers Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 061/122] btrfs: tree-checker: check for overlapping extent items Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 062/122] btrfs: introduce btrfs_lookup_match_dir Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 063/122] btrfs: unify lookup return value when dir entry is missing Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 064/122] btrfs: do not pin logs too early during renames Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 065/122] lan743x: fix for potential NULL pointer dereference with bare card Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 066/122] platform/x86: intel-vbtn: Support for tablet mode on HP Pavilion 13 x360 PC Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 067/122] iwlwifi: mvm: do more useful queue sync accounting Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 068/122] iwlwifi: mvm: write queue_sync_state only for sync Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 069/122] jbd2: remove redundant buffer io error checks Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 070/122] jbd2: recheck chechpointing non-dirty buffer Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 071/122] jbd2: Fix wrongly judgement for buffer head removing while doing checkpoint Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 072/122] x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm() Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 073/122] erofs: fix lz4 inplace decompression Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 074/122] IB/hfi1: Fix sdma.h tx->num_descs off-by-one error Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 075/122] s390/cio: fix invalid -EBUSY on ccw_device_start Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 076/122] dm-crypt: dont modify the data when using authenticated encryption Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 077/122] KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 078/122] KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table() Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 079/122] gtp: fix use-after-free and null-ptr-deref in gtp_genl_dump_pdp() Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 080/122] PCI/MSI: Prevent MSI hardware interrupt number truncation Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 081/122] l2tp: pass correct message length to ip6_append_data Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 082/122] ARM: ep93xx: Add terminator to gpiod_lookup_table Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 083/122] Revert "x86/ftrace: Use alternative RET encoding" Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 084/122] x86/text-patching: Make text_gen_insn() play nice with ANNOTATE_NOENDBR Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 085/122] x86/ibt,paravirt: Use text_gen_insn() for paravirt_patch() Greg Kroah-Hartman
2024-03-04 18:49 ` Omar Sandoval
2024-03-05 11:27 ` [PATCH for 5.10-stable] x86/paravirt: Fix build due to __text_gen_insn() backport Borislav Petkov
2024-03-11 20:43 ` Omar Sandoval
2024-03-18 10:17 ` [PATCH 5.10 085/122] x86/ibt,paravirt: Use text_gen_insn() for paravirt_patch() Emeric Brun
2024-03-18 14:20 ` Borislav Petkov
2024-03-20 16:03 ` Sasha Levin
2024-02-27 13:27 ` [PATCH 5.10 086/122] x86/ftrace: Use alternative RET encoding Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 087/122] x86/returnthunk: Allow different return thunks Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 088/122] Revert "x86/alternative: Make custom return thunk unconditional" Greg Kroah-Hartman
2024-02-27 13:27 ` Greg Kroah-Hartman [this message]
2024-02-27 13:27 ` [PATCH 5.10 090/122] usb: cdns3: fixed memory use after free at cdns3_gadget_ep_disable() Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 091/122] usb: cdns3: fix memory double free when handle zero packet Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 092/122] usb: gadget: ncm: Avoid dropping datagrams of properly parsed NTBs Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 093/122] usb: roles: fix NULL pointer issue when put modules reference Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 094/122] usb: roles: dont get/set_role() when usb_role_switch is unregistered Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 095/122] mptcp: fix lockless access in subflow ULP diag Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 096/122] IB/hfi1: Fix a memleak in init_credit_return Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 097/122] RDMA/bnxt_re: Return error for SRQ resize Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 098/122] RDMA/srpt: Support specifying the srpt_service_guid parameter Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 099/122] RDMA/qedr: Fix qedr_create_user_qp error flow Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 100/122] arm64: dts: rockchip: set num-cs property for spi on px30 Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 101/122] RDMA/srpt: fix function pointer cast warnings Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 102/122] bpf, scripts: Correct GPL license name Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 103/122] scsi: jazz_esp: Only build if SCSI core is builtin Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 104/122] nouveau: fix function cast warnings Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 105/122] ipv4: properly combine dev_base_seq and ipv4.dev_addr_genid Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 106/122] ipv6: properly combine dev_base_seq and ipv6.dev_addr_genid Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 107/122] afs: Increase buffer size in afs_update_volume_status() Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 108/122] ipv6: sr: fix possible use-after-free and null-ptr-deref Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 109/122] packet: move from strlcpy with unused retval to strscpy Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 110/122] net: dev: Convert sa_data to flexible array in struct sockaddr Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 111/122] s390: use the correct count for __iowrite64_copy() Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 112/122] tls: rx: jump to a more appropriate label Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 113/122] tls: rx: drop pointless else after goto Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 114/122] tls: stop recv() if initial process_rx_list gave us non-DATA Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 115/122] netfilter: nf_tables: set dormant flag on hook register failure Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 116/122] drm/syncobj: make lockdep complain on WAIT_FOR_SUBMIT v3 Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 117/122] drm/syncobj: call drm_syncobj_fence_add_wait when WAIT_AVAILABLE flag is set Greg Kroah-Hartman
2024-02-27 13:27 ` [PATCH 5.10 118/122] drm/amd/display: Fix memory leak in dm_sw_fini() Greg Kroah-Hartman
2024-02-27 13:28 ` [PATCH 5.10 119/122] block: ataflop: more blk-mq refactoring fixes Greg Kroah-Hartman
2024-02-27 13:28 ` [PATCH 5.10 120/122] fs/aio: Restrict kiocb_set_cancel_fn() to I/O submitted via libaio Greg Kroah-Hartman
2024-02-27 13:28 ` [PATCH 5.10 121/122] arp: Prevent overflow in arp_req_get() Greg Kroah-Hartman
2024-02-27 13:28 ` [PATCH 5.10 122/122] ext4: regenerate buddy after block freeing failed if under fc replay Greg Kroah-Hartman
2024-02-27 18:28 ` [PATCH 5.10 000/122] 5.10.211-rc1 review Pavel Machek
2024-02-27 18:56 ` Daniel Díaz
2024-02-27 18:56 ` Florian Fainelli
2024-02-28 6:03 ` Greg Kroah-Hartman
2024-02-27 18:58 ` Florian Fainelli
2024-02-27 23:59 ` Dominique Martinet
2024-02-28 6:06 ` Greg Kroah-Hartman
2024-02-28 20:39 ` Kees Cook
2024-02-29 2:22 ` Dominique Martinet
2024-02-28 13:42 ` Jon Hunter
2024-02-29 10:56 ` Shreeya Patel
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=20240227131601.618509293@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=bp@alien8.de \
--cc=patches@lists.linux.dev \
--cc=peterz@infradead.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).