Re: [PATCH v10 26/26] x86/cet/shstk: Add arch_prctl functions for shadow stack
From: Eugene Syromiatnikov <hidden>
Date: 2020-05-22 17:29:58
Also in:
linux-arch, linux-doc, linux-mm, lkml
From: Eugene Syromiatnikov <hidden>
Date: 2020-05-22 17:29:58
Also in:
linux-arch, linux-doc, linux-mm, lkml
On Fri, May 22, 2020 at 10:17:43AM -0700, Yu-cheng Yu wrote:
On Thu, 2020-05-21 at 15:42 -0700, Kees Cook wrote:quoted
On Wed, Apr 29, 2020 at 03:07:32PM -0700, Yu-cheng Yu wrote:[...]quoted
quoted
+ +int prctl_cet(int option, u64 arg2) +{ + struct cet_status *cet; + + if (!IS_ENABLED(CONFIG_X86_INTEL_CET)) + return -EINVAL;Using -EINVAL here means userspace can't tell the difference between an old kernel and a kernel not built with CONFIG_X86_INTEL_CET. Perhaps -ENOTSUPP?Looked into this. The kernel and GLIBC are not in sync. So maybe we still use EINVAL here? Yu-cheng In kernel: ---------- #define EOPNOTSUPP 95 #define ENOTSUPP 524 In GLIBC: --------- printf("ENOTSUP=%d\n", ENOTSUP); printf("EOPNOTSUPP=%d\n", EOPNOTSUPP); printf("%s=524\n", strerror(524)); ENOTSUP=95 EOPNOTSUPP=95 Unknown error 524=524
EOPNOTSUPP/ENOTSUP/ENOTSUPP is actually a mess, it's summarized recently by Michael Kerrisk[1]. From the kernel's point of view, I think it would be reasonable to return EOPNOTSUPP, and expect that the userspace would use ENOTSUP to match against it. [1] https://lore.kernel.org/linux-man/cb4c685b-6c5d-9c16-aade-0c95e57de4b9@gmail.com/ (local)