Re: [PATCH v10 01/26] Documentation/x86: Add CET description
From: Dave Hansen <hidden>
Date: 2020-05-19 00:38:21
Also in:
linux-api, linux-arch, linux-mm, lkml
On 5/18/20 4:47 PM, Yu-cheng Yu wrote:
On Fri, 2020-05-15 at 19:53 -0700, Yu-cheng Yu wrote:quoted
On Fri, 2020-05-15 at 16:56 -0700, Dave Hansen wrote:quoted
On 5/15/20 4:29 PM, Yu-cheng Yu wrote:quoted
[...] I have run them with CET enabled. All of them pass, except for the following: Sigreturn from 64-bit to 32-bit fails, because shadow stack is at a 64-bit address. This is understandable.[...] One a separate topic: You ran the selftests and one failed. This is a *MASSIVE* warning sign. It should minimally be described in your cover letter, and accompanied by a fix to the test case. It is absolutely unacceptable to introduce a kernel feature that causes a test to fail. You must either fix your kernel feature or you fix the test. This code can not be accepted until this selftests issue is rectified.The x86/sigreturn test constructs 32-bit ldt entries, and does sigreturn from 64-bit to 32-bit context. We do not have a way to construct a static 32-bit shadow stack.
Why? What's the limiting factor? Hardware architecture? Something in the kernel?
Why do we want that? I think we can simply run the test with CET disabled.
The sadistic parts of selftests/x86 come from real bugs. Either bugs where the kernel fell over, or where behavior changed that broke apps. I'd suggest doing some research on where that particular test case came from. Find the author of the test, look at the changelogs. If this is something that a real app does, this is a problem. If it's a sadistic test that Andy L added because it was an attack vector against the entry code, it's a different story. I don't personally know the background, but the changelogs can help you find the person that does.