Re: [3/7,media] dvb: don't use 'time_t' in event ioctl

From: Arnd Bergmann
Date: Wed Aug 30 2017 - 16:25:10 EST


>> diff --git a/include/uapi/linux/dvb/video.h b/include/uapi/linux/dvb/video.h
>> index d3d14a59d2d5..6c7f9298d7c2 100644
>> --- a/include/uapi/linux/dvb/video.h
>> +++ b/include/uapi/linux/dvb/video.h
>> @@ -135,7 +135,8 @@ struct video_event {
>> #define VIDEO_EVENT_FRAME_RATE_CHANGED 2
>> #define VIDEO_EVENT_DECODER_STOPPED 3
>> #define VIDEO_EVENT_VSYNC 4
>> - __kernel_time_t timestamp;
>> + /* unused, make sure to use atomic time for y2038 if it ever gets used */
>> + long timestamp;
>
> This change breaks x32 ABI (and possibly MIPS n32 ABI), as __kernel_time_t
> there is 64 bit already:
> https://sourceforge.net/p/strace/mailman/message/36015326/
>
> Note the change in structure size from 0x20 to 0x14 for VIDEO_GET_EVENT
> command in linux/x32/ioctls_inc0.h.

Are you sure it worked before the change? I don't see any handler in the kernel
for the x32 compat ioctl call here, only the compat_video_event handling, so
my guess is that the change unintentionally fixes x32.

Arnd