Archive-only list for patches
 help / color / mirror / Atom feed
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 <peterz@infradead.org>,
	Suren Baghdasaryan <surenb@google.com>,
	"Liam R. Howlett" <Liam.Howlett@Oracle.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.12 014/206] mm: convert mm_lock_seq to a proper seqcount
Date: Tue, 12 May 2026 19:37:46 +0200	[thread overview]
Message-ID: <20260512173933.121747607@linuxfoundation.org> (raw)
In-Reply-To: <20260512173932.810559588@linuxfoundation.org>

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

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

From: Suren Baghdasaryan <surenb@google.com>

[ Upstream commit eb449bd96954b1c1e491d19066cfd2a010f0aa47 ]

Convert mm_lock_seq to be seqcount_t and change all mmap_write_lock
variants to increment it, in-line with the usual seqcount usage pattern.
This lets us check whether the mmap_lock is write-locked by checking
mm_lock_seq.sequence counter (odd=locked, even=unlocked). This will be
used when implementing mmap_lock speculation functions.
As a result vm_lock_seq is also change to be unsigned to match the type
of mm_lock_seq.sequence.

Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Link: https://lkml.kernel.org/r/20241122174416.1367052-2-surenb@google.com
Stable-dep-of: 52f657e34d7b ("x86: shadow stacks: proper error handling for mmap lock")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/mm.h               | 12 +++----
 include/linux/mm_types.h         |  7 ++--
 include/linux/mmap_lock.h        | 55 +++++++++++++++++++++-----------
 kernel/fork.c                    |  5 +--
 mm/init-mm.c                     |  2 +-
 tools/testing/vma/vma.c          |  4 +--
 tools/testing/vma/vma_internal.h |  4 +--
 7 files changed, 53 insertions(+), 36 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 20f9287d23a57..01d53e7fdcce5 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -698,7 +698,7 @@ static inline bool vma_start_read(struct vm_area_struct *vma)
 	 * we don't rely on for anything - the mm_lock_seq read against which we
 	 * need ordering is below.
 	 */
-	if (READ_ONCE(vma->vm_lock_seq) == READ_ONCE(vma->vm_mm->mm_lock_seq))
+	if (READ_ONCE(vma->vm_lock_seq) == READ_ONCE(vma->vm_mm->mm_lock_seq.sequence))
 		return false;
 
 	if (unlikely(down_read_trylock(&vma->vm_lock->lock) == 0))
@@ -715,7 +715,7 @@ static inline bool vma_start_read(struct vm_area_struct *vma)
 	 * after it has been unlocked.
 	 * This pairs with RELEASE semantics in vma_end_write_all().
 	 */
-	if (unlikely(vma->vm_lock_seq == smp_load_acquire(&vma->vm_mm->mm_lock_seq))) {
+	if (unlikely(vma->vm_lock_seq == raw_read_seqcount(&vma->vm_mm->mm_lock_seq))) {
 		up_read(&vma->vm_lock->lock);
 		return false;
 	}
@@ -730,7 +730,7 @@ static inline void vma_end_read(struct vm_area_struct *vma)
 }
 
 /* WARNING! Can only be used if mmap_lock is expected to be write-locked */
-static bool __is_vma_write_locked(struct vm_area_struct *vma, int *mm_lock_seq)
+static bool __is_vma_write_locked(struct vm_area_struct *vma, unsigned int *mm_lock_seq)
 {
 	mmap_assert_write_locked(vma->vm_mm);
 
@@ -738,7 +738,7 @@ static bool __is_vma_write_locked(struct vm_area_struct *vma, int *mm_lock_seq)
 	 * current task is holding mmap_write_lock, both vma->vm_lock_seq and
 	 * mm->mm_lock_seq can't be concurrently modified.
 	 */
-	*mm_lock_seq = vma->vm_mm->mm_lock_seq;
+	*mm_lock_seq = vma->vm_mm->mm_lock_seq.sequence;
 	return (vma->vm_lock_seq == *mm_lock_seq);
 }
 
@@ -749,7 +749,7 @@ static bool __is_vma_write_locked(struct vm_area_struct *vma, int *mm_lock_seq)
  */
 static inline void vma_start_write(struct vm_area_struct *vma)
 {
-	int mm_lock_seq;
+	unsigned int mm_lock_seq;
 
 	if (__is_vma_write_locked(vma, &mm_lock_seq))
 		return;
@@ -767,7 +767,7 @@ static inline void vma_start_write(struct vm_area_struct *vma)
 
 static inline void vma_assert_write_locked(struct vm_area_struct *vma)
 {
-	int mm_lock_seq;
+	unsigned int mm_lock_seq;
 
 	VM_BUG_ON_VMA(!__is_vma_write_locked(vma, &mm_lock_seq), vma);
 }
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 2c834cbf3ff5d..2113f7da182c6 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -750,7 +750,7 @@ struct vm_area_struct {
 	 * counter reuse can only lead to occasional unnecessary use of the
 	 * slowpath.
 	 */
-	int vm_lock_seq;
+	unsigned int vm_lock_seq;
 	/* Unstable RCU readers are allowed to read this. */
 	struct vma_lock *vm_lock;
 #endif
@@ -922,6 +922,9 @@ struct mm_struct {
 		 * Roughly speaking, incrementing the sequence number is
 		 * equivalent to releasing locks on VMAs; reading the sequence
 		 * number can be part of taking a read lock on a VMA.
+		 * Incremented every time mmap_lock is write-locked/unlocked.
+		 * Initialized to 0, therefore odd values indicate mmap_lock
+		 * is write-locked and even values that it's released.
 		 *
 		 * Can be modified under write mmap_lock using RELEASE
 		 * semantics.
@@ -930,7 +933,7 @@ struct mm_struct {
 		 * Can be read with ACQUIRE semantics if not holding write
 		 * mmap_lock.
 		 */
-		int mm_lock_seq;
+		seqcount_t mm_lock_seq;
 #endif
 
 
diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h
index de9dc20b01ba7..9715326f5a85f 100644
--- a/include/linux/mmap_lock.h
+++ b/include/linux/mmap_lock.h
@@ -71,39 +71,39 @@ static inline void mmap_assert_write_locked(const struct mm_struct *mm)
 }
 
 #ifdef CONFIG_PER_VMA_LOCK
-/*
- * Drop all currently-held per-VMA locks.
- * This is called from the mmap_lock implementation directly before releasing
- * a write-locked mmap_lock (or downgrading it to read-locked).
- * This should normally NOT be called manually from other places.
- * If you want to call this manually anyway, keep in mind that this will release
- * *all* VMA write locks, including ones from further up the stack.
- */
-static inline void vma_end_write_all(struct mm_struct *mm)
+static inline void mm_lock_seqcount_init(struct mm_struct *mm)
 {
-	mmap_assert_write_locked(mm);
-	/*
-	 * Nobody can concurrently modify mm->mm_lock_seq due to exclusive
-	 * mmap_lock being held.
-	 * We need RELEASE semantics here to ensure that preceding stores into
-	 * the VMA take effect before we unlock it with this store.
-	 * Pairs with ACQUIRE semantics in vma_start_read().
-	 */
-	smp_store_release(&mm->mm_lock_seq, mm->mm_lock_seq + 1);
+	seqcount_init(&mm->mm_lock_seq);
+}
+
+static inline void mm_lock_seqcount_begin(struct mm_struct *mm)
+{
+	do_raw_write_seqcount_begin(&mm->mm_lock_seq);
+}
+
+static inline void mm_lock_seqcount_end(struct mm_struct *mm)
+{
+	ASSERT_EXCLUSIVE_WRITER(mm->mm_lock_seq);
+	do_raw_write_seqcount_end(&mm->mm_lock_seq);
 }
+
 #else
-static inline void vma_end_write_all(struct mm_struct *mm) {}
+static inline void mm_lock_seqcount_init(struct mm_struct *mm) {}
+static inline void mm_lock_seqcount_begin(struct mm_struct *mm) {}
+static inline void mm_lock_seqcount_end(struct mm_struct *mm) {}
 #endif
 
 static inline void mmap_init_lock(struct mm_struct *mm)
 {
 	init_rwsem(&mm->mmap_lock);
+	mm_lock_seqcount_init(mm);
 }
 
 static inline void mmap_write_lock(struct mm_struct *mm)
 {
 	__mmap_lock_trace_start_locking(mm, true);
 	down_write(&mm->mmap_lock);
+	mm_lock_seqcount_begin(mm);
 	__mmap_lock_trace_acquire_returned(mm, true, true);
 }
 
@@ -111,6 +111,7 @@ static inline void mmap_write_lock_nested(struct mm_struct *mm, int subclass)
 {
 	__mmap_lock_trace_start_locking(mm, true);
 	down_write_nested(&mm->mmap_lock, subclass);
+	mm_lock_seqcount_begin(mm);
 	__mmap_lock_trace_acquire_returned(mm, true, true);
 }
 
@@ -120,10 +121,26 @@ static inline int mmap_write_lock_killable(struct mm_struct *mm)
 
 	__mmap_lock_trace_start_locking(mm, true);
 	ret = down_write_killable(&mm->mmap_lock);
+	if (!ret)
+		mm_lock_seqcount_begin(mm);
 	__mmap_lock_trace_acquire_returned(mm, true, ret == 0);
 	return ret;
 }
 
+/*
+ * Drop all currently-held per-VMA locks.
+ * This is called from the mmap_lock implementation directly before releasing
+ * a write-locked mmap_lock (or downgrading it to read-locked).
+ * This should normally NOT be called manually from other places.
+ * If you want to call this manually anyway, keep in mind that this will release
+ * *all* VMA write locks, including ones from further up the stack.
+ */
+static inline void vma_end_write_all(struct mm_struct *mm)
+{
+	mmap_assert_write_locked(mm);
+	mm_lock_seqcount_end(mm);
+}
+
 static inline void mmap_write_unlock(struct mm_struct *mm)
 {
 	__mmap_lock_trace_released(mm, true);
diff --git a/kernel/fork.c b/kernel/fork.c
index 29532a57e0cd4..c6415bb0abf59 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -450,7 +450,7 @@ static bool vma_lock_alloc(struct vm_area_struct *vma)
 		return false;
 
 	init_rwsem(&vma->vm_lock->lock);
-	vma->vm_lock_seq = -1;
+	vma->vm_lock_seq = UINT_MAX;
 
 	return true;
 }
@@ -1280,9 +1280,6 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p,
 	seqcount_init(&mm->write_protect_seq);
 	mmap_init_lock(mm);
 	INIT_LIST_HEAD(&mm->mmlist);
-#ifdef CONFIG_PER_VMA_LOCK
-	mm->mm_lock_seq = 0;
-#endif
 	mm_pgtables_bytes_init(mm);
 	mm->map_count = 0;
 	mm->locked_vm = 0;
diff --git a/mm/init-mm.c b/mm/init-mm.c
index 24c8093792745..6af3ad675930b 100644
--- a/mm/init-mm.c
+++ b/mm/init-mm.c
@@ -40,7 +40,7 @@ struct mm_struct init_mm = {
 	.arg_lock	=  __SPIN_LOCK_UNLOCKED(init_mm.arg_lock),
 	.mmlist		= LIST_HEAD_INIT(init_mm.mmlist),
 #ifdef CONFIG_PER_VMA_LOCK
-	.mm_lock_seq	= 0,
+	.mm_lock_seq	= SEQCNT_ZERO(init_mm.mm_lock_seq),
 #endif
 	.user_ns	= &init_user_ns,
 	.cpu_bitmap	= CPU_BITS_NONE,
diff --git a/tools/testing/vma/vma.c b/tools/testing/vma/vma.c
index b33b47342d418..9074aaced9c5a 100644
--- a/tools/testing/vma/vma.c
+++ b/tools/testing/vma/vma.c
@@ -87,7 +87,7 @@ static struct vm_area_struct *alloc_and_link_vma(struct mm_struct *mm,
 	 * begun. Linking to the tree will have caused this to be incremented,
 	 * which means we will get a false positive otherwise.
 	 */
-	vma->vm_lock_seq = -1;
+	vma->vm_lock_seq = UINT_MAX;
 
 	return vma;
 }
@@ -212,7 +212,7 @@ static bool vma_write_started(struct vm_area_struct *vma)
 	int seq = vma->vm_lock_seq;
 
 	/* We reset after each check. */
-	vma->vm_lock_seq = -1;
+	vma->vm_lock_seq = UINT_MAX;
 
 	/* The vma_start_write() stub simply increments this value. */
 	return seq > -1;
diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_internal.h
index 1d5bbc8464f18..0a95dbb0346fb 100644
--- a/tools/testing/vma/vma_internal.h
+++ b/tools/testing/vma/vma_internal.h
@@ -231,7 +231,7 @@ struct vm_area_struct {
 	 * counter reuse can only lead to occasional unnecessary use of the
 	 * slowpath.
 	 */
-	int vm_lock_seq;
+	unsigned int vm_lock_seq;
 	struct vma_lock *vm_lock;
 #endif
 
@@ -406,7 +406,7 @@ static inline bool vma_lock_alloc(struct vm_area_struct *vma)
 		return false;
 
 	init_rwsem(&vma->vm_lock->lock);
-	vma->vm_lock_seq = -1;
+	vma->vm_lock_seq = UINT_MAX;
 
 	return true;
 }
-- 
2.53.0




  parent reply	other threads:[~2026-05-12 17:43 UTC|newest]

Thread overview: 222+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-12 17:37 [PATCH 6.12 000/206] 6.12.88-rc1 review Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 001/206] scsi: target: configfs: Bound snprintf() return in tg_pt_gp_members_show() Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 002/206] ipmi: Add limits to event and receive message requests Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 003/206] ipmi: Check event message buffer response for bad data Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 004/206] ipmi:si: Return state to normal if message allocation fails Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 005/206] fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 006/206] ACPI: scan: Use acpi_dev_put() in object add error paths Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 007/206] ACPI: video: Add backlight=native quirk for Dell OptiPlex 7770 AIO Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 008/206] ACPI: CPPC: Fix related_cpus inconsistency during CPU hotplug Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 009/206] ACPI: video: force native backlight on HP OMEN 16 (8A44) Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 010/206] iommufd: Fix a race with concurrent allocation and unmap Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 011/206] ASoC: SOF: Dont allow pointer operations on unconfigured streams Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 012/206] spi: rockchip: fix controller deregistration Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 013/206] ksmbd: rewrite stop_sessions() with restartable iteration Greg Kroah-Hartman
2026-05-12 17:37 ` Greg Kroah-Hartman [this message]
2026-05-12 17:37 ` [PATCH 6.12 015/206] x86: shadow stacks: proper error handling for mmap lock Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 016/206] x86/shstk: Prevent deadlock during shstk sigreturn Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 017/206] KVM: x86: Fix shadow paging use-after-free due to unexpected GFN Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 018/206] iommu/amd: Use atomic64_inc_return() in iommu.c Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 019/206] iommu/amd: serialize sequence allocation under concurrent TLB invalidations Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 020/206] flow_dissector: do not dissect PPPoE PFC frames Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 021/206] net: txgbe: fix RTNL assertion warning when remove module Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 022/206] net: af_key: zero aligned sockaddr tail in PF_KEY exports Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 023/206] KVM: SVM: check validity of VMCB controls when returning from SMM Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 024/206] net/sched: sch_red: Replace direct dequeue call with peek and qdisc_dequeue_peeked Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 025/206] Bluetooth: L2CAP: Fix deadlock in l2cap_conn_del() Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 026/206] rxrpc: Fix conn-level packet handling to unshare RESPONSE packets Greg Kroah-Hartman
2026-05-12 17:37 ` [PATCH 6.12 027/206] rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 028/206] exit: prevent preemption of oopsing TASK_DEAD task Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 029/206] wifi: mt76: mt7925: fix AMPDU state handling in mt7925_tx_check_aggr Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 030/206] wifi: mt76: mt7925: fix incorrect length field in txpower command Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 031/206] wifi: mt76: mt7921: fix a potential clc buffer length underflow Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 032/206] wifi: mt76: mt7921: fix ROC abort flow interruption in mt7921_roc_work Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 033/206] wifi: b43legacy: enforce bounds check on firmware key index in RX path Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 034/206] wifi: mac80211: drop stray static from fast-RX rx_result Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 035/206] wifi: rsi: fix kthread lifetime race between self-exit and external-stop Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 036/206] wifi: mac80211: use safe list iteration in radar detect work Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 037/206] wifi: ath5k: do not access array OOB Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 038/206] wifi: mac80211: remove station if connection prep fails Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 039/206] wifi: b43: enforce bounds check on firmware key index in b43_rx() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 040/206] wifi: brcmfmac: Fix potential use-after-free issue when stopping watchdog task Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 041/206] usb: usblp: fix heap leak in IEEE 1284 device ID via short response Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 042/206] usb: usblp: fix uninitialized heap leak via LPGETSTATUS ioctl Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 043/206] ALSA: usb-audio: midi2: Restart output URBs on resume Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 044/206] ALSA: usb-audio: Avoid potential endless loop in convert_chmap_v3() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 045/206] ALSA: usb-audio: Fix UAC3 cluster descriptor size check Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 046/206] usb: typec: tcpm: reset internal port states on soft reset AMS Greg Kroah-Hartman
2026-05-12 20:41   ` Amit Sunil Dhamne
2026-05-13 11:35   ` Harshit Mogalapalli
2026-05-13 12:00     ` Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 047/206] USB: omap_udc: DMA: Dont enable burst 4 mode Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 048/206] USB: serial: option: add Telit Cinterion LE910Cx compositions Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 049/206] usb: ulpi: fix memory leak on ulpi_register() error paths Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 050/206] ALSA: pcm: oss: Fix data race at accessing runtime.oss.trigger Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 051/206] ALSA: firewire-tascam: Do not drop unread control events Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 052/206] powerpc/kdump: fix KASAN sanitization flag for core_$(BITS).o Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 053/206] xfrm: provide message size for XFRM_MSG_MAPPING Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 054/206] xfrm: defensively unhash xfrm_state lists in __xfrm_state_delete Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 055/206] ipv6: xfrm6: release dst on error in xfrm6_rcv_encap() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 056/206] xfrm: ah: account for ESN high bits in async callbacks Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 057/206] selinux: dont reserve xattr slot when we wont fill it Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 058/206] selinux: shrink critical section in sel_write_load() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 059/206] selinux: prune /sys/fs/selinux/disable Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 060/206] LoongArch: KVM: Fix missing EMULATE_FAIL in kvm_emu_mmio_read() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 061/206] Bluetooth: virtio_bt: clamp rx length before skb_put Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 062/206] Bluetooth: virtio_bt: validate rx pkt_type header length Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 063/206] Bluetooth: btmtk: validate WMT event SKB length before struct access Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 064/206] Bluetooth: hci_event: Fix OOB read and infinite loop in hci_le_create_big_complete_evt Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 065/206] Bluetooth: L2CAP: Fix null-ptr-deref in l2cap_sock_new_connection_cb() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 066/206] Bluetooth: L2CAP: Fix null-ptr-deref in l2cap_sock_state_change_cb() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 067/206] spi: syncuacer: fix controller deregistration Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 068/206] spi: sun4i: " Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 069/206] spi: ti-qspi: " Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 070/206] spi: sun6i: " Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 071/206] spi: zynqmp-gqspi: " Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 072/206] spi: s3c64xx: fix NULL-deref on driver unbind Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 073/206] staging: vme_user: fix root device leak on init failure Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 074/206] fanotify: fix false positive on permission events Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 075/206] KVM: arm64: Fix kvm_vcpu_initialized() macro parameter Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 076/206] mtd: spi-nor: debugfs: fix out-of-bounds read in spi_nor_params_show() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 077/206] LoongArch: Fix SYM_SIGFUNC_START definition for 32BIT Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 078/206] net: rtnetlink: zero ifla_vf_broadcast to avoid stack infoleak in rtnl_fill_vfinfo Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 079/206] sound: ua101: fix division by zero at probe Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 080/206] net: libwx: fix VF illegal register access Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 081/206] ip6_gre: Use cached t->net in ip6erspan_changelink() Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 082/206] net/rds: handle zerocopy send cleanup before the message is queued Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 083/206] net: wwan: t7xx: validate port_count against message length in t7xx_port_enum_msg_handler Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 084/206] parisc: Fix IRQ leak in LASI driver Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 085/206] hwmon: (ltc2992) Clamp threshold writes to hardware range Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 086/206] hwmon: (ltc2992) Fix u32 overflow in power read path Greg Kroah-Hartman
2026-05-12 17:38 ` [PATCH 6.12 087/206] clk: rk808: fix OF node reference imbalance Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 088/206] hwmon: (corsair-psu) Close HID device on probe errors Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 089/206] af_unix: Reject SIOCATMARK on non-stream sockets Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 090/206] block: add pgmap check to biovec_phys_mergeable Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 091/206] cifs: abort open_cached_dir if we dont request leases Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 092/206] cifs: change_conf needs to be called for session setup Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 093/206] extcon: ptn5150: handle pending IRQ events during system resume Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 094/206] gpio: of: clear OF_POPULATED on hog nodes in remove path Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 095/206] hv_sock: fix ARM64 support Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 096/206] ibmveth: Disable GSO for packets with small MSS Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 097/206] ice: fix double free in ice_sf_eth_activate() error path Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 098/206] spi: microchip-core-qspi: fix controller deregistration Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 099/206] udf: reject descriptors with oversized CRC length Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 100/206] thermal: core: Free thermal zone ID later during removal Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 101/206] thermal/drivers/sprd: Fix temperature clamping in sprd_thm_temp_to_rawdata Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 102/206] thermal/drivers/sprd: Fix raw temperature clamping in sprd_thm_rawdata_to_temp Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 103/206] spi: topcliff-pch: fix controller deregistration Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 104/206] spi: topcliff-pch: fix use-after-free on unbind Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 105/206] clk: imx: imx8-acm: fix flags for acm clocks Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 106/206] clk: microchip: mpfs-ccc: fix out of bounds access during output registration Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 107/206] cpuidle: powerpc: avoid double clear when breaking snooze Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 108/206] ASoC: amd: yc: Add HP OMEN Gaming Laptop 16-ap0xxx product line in quirk table Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 109/206] ASoC: fsl_easrc: fix comment typo Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 110/206] ASoC: Intel: bytcr_wm5102: Fix MCLK leak on platform_clock_control error Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 111/206] ASoC: qcom: q6apm-dai: reset queue ptr on trigger stop Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 112/206] ASoC: qcom: q6apm-lpass-dai: Fix multiple graph opens Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 113/206] ASoC: qcom: q6apm: remove child devices when apm is removed Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 114/206] btrfs: fix double free in create_space_info() error path Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 115/206] dm-thin: fix metadata refcount underflow Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 116/206] dm: dont report warning when doing deferred remove Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 117/206] dm: fix a buffer overflow in ioctl processing Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 118/206] eventfs: Hold eventfs_mutex and SRCU when remount walks events Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 119/206] dm-verity-fec: correctly reject too-small FEC devices Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 120/206] dm-verity-fec: correctly reject too-small hash devices Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 121/206] isofs: validate Rock Ridge CE continuation extent against volume size Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 122/206] isofs: validate block number from NFS file handle in isofs_export_iget Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 123/206] iommu/arm-smmu-v3: Add a missing dma_wmb() for hitless STE update Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 124/206] lib/crypto: mpi: Fix integer underflow in mpi_read_raw_from_sgl() Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 125/206] lib/scatterlist: fix length calculations in extract_kvec_to_sg Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 126/206] lib/scatterlist: fix temp buffer in extract_user_to_sg() Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 127/206] libceph: Fix slab-out-of-bounds access in auth message processing Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 128/206] md/raid10: fix divide-by-zero in setup_geo() with zero far_copies Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 129/206] nvme-apple: drop invalid put of admin queue reference count Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 130/206] nvmet-tcp: fix race between ICReq handling and queue teardown Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 131/206] nvmet: avoid recursive nvmet-wq flush in nvmet_ctrl_free Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 132/206] openvswitch: vport: fix self-deadlock on release of tunnel ports Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 133/206] pmdomain: core: Fix detach procedure for virtual devices in genpd Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 134/206] RDMA/hns: Fix unlocked call to hns_roce_qp_remove() Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 135/206] riscv: kvm: fix vector context allocation leak Greg Kroah-Hartman
2026-05-13 11:49   ` Harshit Mogalapalli
2026-05-13 12:03     ` Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 136/206] s390/debug: Reject zero-length input in debug_input_flush_fn() Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 137/206] smb/client: fix out-of-bounds read in smb2_compound_op() Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 138/206] smb/client: fix out-of-bounds read in symlink_data() Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 139/206] smb: client: use kzalloc to zero-initialize security descriptor buffer Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 140/206] smb: client: validate dacloffset before building DACL pointers Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 141/206] KVM: x86: check for nEPT/nNPT in slow flush hypercalls Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 142/206] mm/damon/sysfs-schemes: protect memcg_path kfree() with damon_sysfs_lock Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 143/206] PCI: Update saved_config_space upon resource assignment Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 144/206] PCI/AER: Clear only error bits in PCIe Device Status Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 145/206] PCI/AER: Stop ruling out unbound devices as error source Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 146/206] PCI/ASPM: Fix pci_clear_and_set_config_dword() usage Greg Kroah-Hartman
2026-05-12 17:39 ` [PATCH 6.12 147/206] power: supply: max17042: avoid overflow when determining health Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 148/206] RDMA/mana: Fix error unwind in mana_ib_create_qp_rss() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 149/206] RDMA/mana: Fix mana_destroy_wq_obj() cleanup " Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 150/206] RDMA/mana: Validate rx_hash_key_len Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 151/206] RDMA/mlx4: Fix resource leak on error in mlx4_ib_create_srq() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 152/206] RDMA/mlx5: Fix error path fall-through in mlx5_ib_dev_res_srq_init() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 153/206] RDMA/ocrdma: Dont NULL deref uctx on errors in ocrdma_copy_pd_uresp() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 154/206] RDMA/rxe: Reject non-8-byte ATOMIC_WRITE payloads Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 155/206] RDMA/rxe: Reject unknown opcodes before ICRC processing Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 156/206] RDMA/vmw_pvrdma: Fix double free on pvrdma_alloc_ucontext() error path Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 157/206] selftests: mptcp: check output: catch cmd errors Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 158/206] selftests: mptcp: pm: restrict unknown check to pm_nl_ctl Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 159/206] mptcp: fastclose msk when linger time is 0 Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 160/206] mptcp: use MPJoinSynAckHMacFailure for SynAck HMAC failure Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 161/206] mptcp: use MPTCP_RST_EMPTCP for ACK HMAC validation failure Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 162/206] mptcp: sockopt: set timestamp flags on subflow socket, not msk Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 163/206] mptcp: fix scheduling with atomic in timestamp sockopt Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 164/206] f2fs: add READ_ONCE() for i_blocks in f2fs_update_inode() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 165/206] f2fs: fix fiemap boundary handling when read extent cache is incomplete Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 166/206] f2fs: fix incorrect multidevice info in trace_f2fs_map_blocks() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 167/206] f2fs: fix node_cnt race between extent node destroy and writeback Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 168/206] f2fs: fix uninitialized kobject put in f2fs_init_sysfs() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 169/206] KVM: arm64: vgic: Fix IIDR revision field extracted from wrong value Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 170/206] KVM: arm64: Fix initialisation order in __pkvm_init_finalise() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 171/206] LoongArch: Fix potential ADE in loongson_gpu_fixup_dma_hang() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 172/206] LoongArch: KVM: Cap KVM_CAP_NR_VCPUS by KVM_CAP_MAX_VCPUS Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 173/206] LoongArch: KVM: Fix "unreliable stack" for kvm_exc_entry Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 174/206] LoongArch: KVM: Fix HW timer interrupt lost when inject interrupt by software Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 175/206] LoongArch: KVM: Move unconditional delay into timer clear scenery Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 176/206] LoongArch: KVM: Use kvm_set_pte() in kvm_flush_pte() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 177/206] LoongArch: Use per-root-bridge PCIH flag to skip mem resource fixup Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 178/206] bpf: Fix use-after-free in arena_vm_close on fork Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 179/206] fbdev: defio: Disconnect deferred I/O from the lifetime of struct fb_info Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 180/206] fs: prepare for adding LSM blob to backing_file Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 181/206] dma-mapping: drop unneeded includes from dma-mapping.h Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 182/206] dma-mapping: add __dma_from_device_group_begin()/end() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 183/206] hwmon: (powerz) Avoid cacheline sharing for DMA buffer Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 184/206] octeon_ep_vf: add NULL check for napi_build_skb() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 185/206] mmc: core: Optimize time for secure erase/trim for some Kingston eMMCs Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 186/206] udf: fix partition descriptor append bookkeeping Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 187/206] mtd: spinand: winbond: Declare the QE bit on W25NxxJW Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 188/206] hfsplus: fix uninit-value by validating catalog record size Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 189/206] hfsplus: fix held lock freed on hfsplus_fill_super() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 190/206] crypto: nx - Migrate to scomp API Greg Kroah-Hartman
2026-05-13 12:12   ` Harshit Mogalapalli
2026-05-12 17:40 ` [PATCH 6.12 191/206] crypto: nx - fix bounce buffer leaks in nx842_crypto_{alloc,free}_ctx Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 192/206] erofs: move {in,out}pages into struct z_erofs_decompress_req Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 193/206] erofs: tidy up z_erofs_lz4_handle_overlap() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 194/206] erofs: fix unsigned underflow in z_erofs_lz4_handle_overlap() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 195/206] gtp: disable BH before calling udp_tunnel_xmit_skb() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 196/206] printk: add print_hex_dump_devel() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 197/206] crypto: caam - guard HMAC key hex dumps in hash_digest_key Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 198/206] ALSA: aloop: Fix peer runtime UAF during format-change stop Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 199/206] net: stmmac: avoid shadowing global buf_sz Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 200/206] net: stmmac: rename STMMAC_GET_ENTRY() -> STMMAC_NEXT_ENTRY() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 201/206] net: stmmac: Prevent NULL deref when RX memory exhausted Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 202/206] wifi: mt76: mt7925: fix incorrect TLV length in CLC command Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 203/206] tracepoint: balance regfunc() on func_add() failure in tracepoint_add_func() Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 204/206] rust: pin-init: fix incorrect accessor reference lifetime Greg Kroah-Hartman
2026-05-12 21:13   ` Miguel Ojeda
2026-05-12 21:35     ` Gary Guo
2026-05-13 12:05       ` Greg KH
2026-05-12 17:40 ` [PATCH 6.12 205/206] KVM: arm64: Wake-up from WFI when iqrchip is in userspace Greg Kroah-Hartman
2026-05-12 17:40 ` [PATCH 6.12 206/206] x86/CPU/AMD: Prevent improper isolation of shared resources in Zen2s op cache Greg Kroah-Hartman
2026-05-12 21:03 ` [PATCH 6.12 000/206] 6.12.88-rc1 review Pavel Machek
2026-05-12 22:16 ` Peter Schneider
2026-05-13  3:30 ` Dominique Martinet
2026-05-13  7:15 ` Brett A C Sheffield
2026-05-13  8:29 ` Francesco Dolcini
2026-05-13 11:12 ` Barry K. Nathan

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=20260512173933.121747607@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=Liam.Howlett@Oracle.com \
    --cc=patches@lists.linux.dev \
    --cc=peterz@infradead.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=surenb@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox