Re: [3/7,media] dvb: don't use 'time_t' in event ioctl
From: Eugene Syromiatnikov
Date: Thu Aug 31 2017 - 09:10:13 EST
On Wed, Aug 30, 2017 at 10:25:01PM +0200, Arnd Bergmann wrote:
> >> 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.
Yes, you're right; unfortunately, I decided to check which ioctl handler
x32 code is using only after sending the e-mail, and now in the process
of preparing some RFC patch for the ioctl commands which have discrepancies
between x32 and compat sizes.
>
> Arnd