On 01.03.22 21:27, Florian Bezdeka wrote:
> On 01.03.22 19:28, Jan Kiszka wrote:
>> On 21.02.22 14:25, Florian Bezdeka wrote:
>>> The compat syscall was previously routed to the native entrypoint.
>>> While the timeout is always based on time64_t the siginfo has to be
>>> handled different in compat mode.
>>>
>>> Signed-off-by: Florian Bezdeka <florian.bezd...@siemens.com>
>>> ---
>>>  kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h | 1 +
>>>  1 file changed, 1 insertion(+)
>>>
>>> diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h 
>>> b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
>>> index 1c83ff4e3..3986b227b 100644
>>> --- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
>>> +++ b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h
>>> @@ -64,6 +64,7 @@ __COBALT_CALL32emu_THUNK(sendmsg)
>>>  __COBALT_CALL32emu_THUNK(mmap)
>>>  __COBALT_CALL32emu_THUNK(backtrace)
>>>  __COBALT_CALL32emu_THUNK(mq_timedreceive64)
>>> +__COBALT_CALL32emu_THUNK(sigtimedwait64)
>>>  __COBALT_CALL32emu_THUNK(recvmmsg64)
>>>  
>>>  #endif /* !_COBALT_X86_ASM_SYSCALL32_TABLE_H */
>>
>> There are way more new 64-bit calls. Matching their original versions
>> against this header, I would say we need more thunks, no?
> 
> They are necessary only if there is special handling for compat mode
> needed. Most of the y2038 related syscalls do not need special
> handling in compat mode as "struct timespec" is now the same in both
> worlds.
> 
> I have some cleanup patches pending, which actually will reduce the
> number of compat stubs. See [1]. It seems I overlooked some header
> magic adding the compat syscalls into the syscall table at a fixed
> offset. So we do not have to care "manually".
> 
> [1] https://gitlab.com/Xenomai/xenomai-hacker-space/-/commits/florian/y2038
> 

OK, but...

>>
>> for time64func in $(git grep 64, kernel/cobalt/posix/syscall32.c | \
>>   sed 's/.*(\([^6]*\)64,.*/\1/'); do
>>     git grep -q $time64func \
>>       kernel/cobalt/arch/x86/include/asm/xenomai/syscall32-table.h && \
>>         echo $time64func; done
>>
>> sem_timedwait
>> clock_getres
>> clock_gettime
>> clock_settime
>> clock_nanosleep
>> mutex_timedlock
>> cond_wait_prologue
>> mq_timedsend
>> mq_timedreceive
>> sigtimedwait
>> monitor_wait
>> event_wait
>> recvmmsg
>>
>> We now have mq_timedreceive64, sigtimedwait64 and recvmmsg64 with
>> thunks. There rest is missing, no?
>>
>> Interestingly, we also have no thunk for old recvmmsg so far. Probably a
>> bug of it own.
>>

...after your cleanups, we should look at this list again. If there is a
compat function, don't there need to be thunk as well?

In the end, we urgently need testing, not only for the new time64 code
paths.

Jan

-- 
Siemens AG, Technology
Competence Center Embedded Linux

Reply via email to