Thread (123 messages) 123 messages, 12 authors, 2018-08-14

Re: [RFC PATCH v2 25/27] x86/cet: Add PTRACE interface for CET

From: Yu-cheng Yu <hidden>
Date: 2018-07-11 15:44:25
Also in: linux-arch, linux-doc, linux-mm, lkml

On Wed, 2018-07-11 at 12:20 +0200, Ingo Molnar wrote:
* Yu-cheng Yu [off-list ref] wrote:
quoted
Add PTRACE interface for CET MSRs.
Please *always* describe new ABIs in the changelog, in a precise,
well-documented 
way.
Ok!
quoted
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index e2ee403865eb..ac2bc3a18427 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -49,7 +49,9 @@ enum x86_regset {
 	REGSET_IOPERM64 = REGSET_XFP,
 	REGSET_XSTATE,
 	REGSET_TLS,
+	REGSET_CET64 = REGSET_TLS,
 	REGSET_IOPERM32,
+	REGSET_CET32,
 };
Why does REGSET_CET64 alias on REGSET_TLS?
In x86_64_regsets[], there is no [REGSET_TLS].  The core dump code
cannot handle holes in the array.
quoted
 struct pt_regs_offset {
@@ -1276,6 +1278,13 @@ static struct user_regset x86_64_regsets[]
__ro_after_init = {
 		.size = sizeof(long), .align = sizeof(long),
 		.active = ioperm_active, .get = ioperm_get
 	},
+	[REGSET_CET64] = {
+		.core_note_type = NT_X86_CET,
+		.n = sizeof(struct cet_user_state) / sizeof(u64),
+		.size = sizeof(u64), .align = sizeof(u64),
+		.active = cetregs_active, .get = cetregs_get,
+		.set = cetregs_set
+	},
Ok, could we first please make this part of the regset code more
readable and 
start the series with a standalone clean-up patch that changes these
initializers 
to something more readable:

	[REGSET_CET64] = {
		.core_note_type	= NT_X86_CET,
		.n		= sizeof(struct cet_user_state) /
sizeof(u64),
		.size		= sizeof(u64),
		.align		= sizeof(u64),
		.active		= cetregs_active,
		.get		= cetregs_get,
		.set		= cetregs_set
	},

? (I'm demonstrating the cleanup based on REGSET_CET64, but this
should be done on 
every other entry first.)
I will fix it.
quoted
--- a/include/uapi/linux/elf.h
+++ b/include/uapi/linux/elf.h
@@ -401,6 +401,7 @@ typedef struct elf64_shdr {
 #define NT_386_TLS	0x200		/* i386 TLS slots
(struct user_desc) */
 #define NT_386_IOPERM	0x201		/* x86 io
permission bitmap (1=deny) */
 #define NT_X86_XSTATE	0x202		/* x86 extended
state using xsave */
+#define NT_X86_CET	0x203		/* x86 cet state */
Acronyms in comments should be in capital letters.

Also, I think I asked this before: why does "Control Flow
Enforcement" abbreviate 
to "CET" (which is a well-known acronym for "Central European Time"),
not to CFE?
I don't know if I can change that, will find out.

Thanks,
Yu-cheng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help