Re: [PATCH v2 2/2] rseq: slice ext: Ensure rseq feature size differs from original rseq size
From: Mathieu Desnoyers
Date: Fri Feb 20 2026 - 15:00:09 EST
On 2026-02-18 15:14, Mathieu Desnoyers wrote:
[...]
diff --git a/include/uapi/linux/rseq.h b/include/uapi/linux/rseq.h
index 863c4a00a66b..d5b3c489901e 100644
--- a/include/uapi/linux/rseq.h
+++ b/include/uapi/linux/rseq.h
@@ -87,8 +87,10 @@ struct rseq_slice_ctrl {
};
/*
- * struct rseq is aligned on 4 * 8 bytes to ensure it is always
- * contained within a single cache-line.
+ * The alignment of struct rseq used by the kernel needs to be 32 bytes
+ * so the kernel can interact with legacy userspace which allocate
+ * struct rseq with its original alignment.
+ * Userspace aligns struct rseq allocation on 32 bytes or more.
I plan to send a v3 of this series to clarify this uapi comment with:
/*
* The original size and alignment of the allocation for struct rseq is
* 32 bytes.
*
* The allocation size needs to be greater or equal to
* max(getauxval(AT_RSEQ_FEATURE_SIZE), 32), and the allocation needs to
* be aligned on max(getauxval(AT_RSEQ_ALIGN), 32).
*
* As an alternative, userspace is allowed to use both the original size
* and alignment of 32 bytes for backward compatibility.
*
* A single active struct rseq registration per thread is allowed.
*/
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com