This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: V2: [PATCH 01/24] x86: Rename __glibc_reserved1 to feature_1 in tcbhead_t [BZ #22563]


On 07/13/2018 03:16 PM, Florian Weimer wrote:
> * Jeff Law:
> 
>> On 07/13/2018 01:05 PM, Carlos O'Donell wrote:
>>> I think the sanitizers are not within their rights to use any bytes in the
>>> tcbhead_t structure, particularly reserved bytes. We should coordinate with
>>> them, but that should not stop the acceptance of this patch in 2.28.
>> sanitizer_common/sanitizer_linux.cc:
>>
>> static bool Aarch64GetESR(ucontext_t *ucontext, u64 *esr) {
>>   static const u32 kEsrMagic = 0x45535201;
>>   u8 *aux = ucontext->uc_mcontext.__reserved;
>>   while (true) {
>>     _aarch64_ctx *ctx = (_aarch64_ctx *)aux;
>>     if (ctx->size == 0) break;
>>     if (ctx->magic == kEsrMagic) {
>>       *esr = ((__sanitizer_esr_context *)ctx)->esr;
>>       return true;
>>     }
>>     aux += ctx->size;
>>   }
>>   return false;
>> }
>>
>> It's seriously lame that they're abusing the reserved field like that...
> 
> In this case, __reserved doesn't mean “reserved for future use”, but
> “reserved as an allocation area for the kernel for dynamically sized
> data structures”.  This is part of the kernel/userspace API.

Right, and this isn't in the tcbhead_t structure either, this is the
on-stack uc_mcontext.

Cheers,
Carlos.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]