This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [RFC PATCH v4 6/9] x86/cet/ibt: Add arch_prctl functions for IBT
- From: Florian Weimer <fw at deneb dot enyo dot de>
- To: Yu-cheng Yu <yu-cheng dot yu at intel dot com>
- Cc: Eugene Syromiatnikov <esyr at redhat dot com>, x86 at kernel dot org, "H. Peter Anvin" <hpa at zytor dot com>, Thomas Gleixner <tglx at linutronix dot de>, Ingo Molnar <mingo at redhat dot com>, linux-kernel at vger dot kernel dot org, linux-doc at vger dot kernel dot org, linux-mm at kvack dot org, linux-arch at vger dot kernel dot org, linux-api at vger dot kernel dot org, Arnd Bergmann <arnd at arndb dot de>, Andy Lutomirski <luto at amacapital dot net>, Balbir Singh <bsingharora at gmail dot com>, Cyrill Gorcunov <gorcunov at gmail dot com>, Dave Hansen <dave dot hansen at linux dot intel dot com>, Florian Weimer <fweimer at redhat dot com>, "H.J. Lu" <hjl dot tools at gmail dot com>, Jann Horn <jannh at google dot com>, Jonathan Corbet <corbet at lwn dot net>, Kees Cook <keescook at chromium dot org>, Mike Kravetz <mike dot kravetz at oracle dot com>, Nadav Amit <nadav dot amit at gmail dot com>, Oleg Nesterov <oleg at redhat dot com>, Pavel Machek <pavel at ucw dot cz>, Peter Zijlstra <peterz at infradead dot org>, Randy Dunlap <rdunlap at infradead dot org>, "Ravi V. Shankar" <ravi dot v dot shankar at intel dot com>, Vedvyas Shanbhogue <vedvyas dot shanbhogue at intel dot com>, libc-alpha at sourceware dot org, carlos at redhat dot com
- Date: Thu, 04 Oct 2018 18:07:47 +0200
- Subject: Re: [RFC PATCH v4 6/9] x86/cet/ibt: Add arch_prctl functions for IBT
- References: <20180921150553.21016-1-yu-cheng.yu@intel.com> <20180921150553.21016-7-yu-cheng.yu@intel.com> <20181004132811.GJ32759@asgard.redhat.com> <3350f7b42b32f3f7a1963a9c9c526210c24f7b05.camel@intel.com>
* Yu-cheng Yu:
> On Thu, 2018-10-04 at 15:28 +0200, Eugene Syromiatnikov wrote:
>> On Fri, Sep 21, 2018 at 08:05:50AM -0700, Yu-cheng Yu wrote:
>> > Update ARCH_CET_STATUS and ARCH_CET_DISABLE to include Indirect
>> > Branch Tracking features.
>> >
>> > Introduce:
>> >
>> > arch_prctl(ARCH_CET_LEGACY_BITMAP, unsigned long *addr)
>> > Enable the Indirect Branch Tracking legacy code bitmap.
>> >
>> > The parameter 'addr' is a pointer to a user buffer.
>> > On returning to the caller, the kernel fills the following:
>> >
>> > *addr = IBT bitmap base address
>> > *(addr + 1) = IBT bitmap size
>>
>> Again, some structure with a size field would be better from
>> UAPI/extensibility standpoint.
>>
>> One additional point: "size" in the structure from kernel should have
>> structure size expected by kernel, and at least providing there "0" from
>> user space shouldn't lead to failure (in fact, it is possible to provide
>> structure size back to userspace even if buffer is too small, along
>> with error).
>
> This has been in GLIBC v2.28. We cannot change it anymore.
In theory, you could, if you change the ARCH_CET_LEGACY_BITMAP
constant, so that glibc will not use the different arch_prctl
operation. We could backport the change into the glibc 2.28 dynamic
linker, so that existing binaries will start using CET again. Then
only statically linked binaries will be impacted.
It's definitely not ideal, but it's doable if the interface is
terminally broken or otherwise unacceptable. But to me it looks like
this threshold isn't reached here.