Re: [PATCH v10 26/26] x86/cet/shstk: Add arch_prctl functions for shadow stack

From: Yu-cheng Yu
Date: Fri May 22 2020 - 13:18:48 EST


On Thu, 2020-05-21 at 15:42 -0700, Kees Cook wrote:
> On Wed, Apr 29, 2020 at 03:07:32PM -0700, Yu-cheng Yu wrote:
[...]
> > +
> > +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