Re: [Y2038] [PATCH 08/23] y2038: ipc: remove __kernel_time_t reference from headers

2019-11-21 Thread Arnd Bergmann
On Wed, Nov 20, 2019 at 11:49 PM Ben Hutchings
 wrote:
>
> On Fri, 2019-11-08 at 22:07 +0100, Arnd Bergmann wrote:
> [...]
> > --- a/arch/x86/include/uapi/asm/sembuf.h
> > +++ b/arch/x86/include/uapi/asm/sembuf.h
> > @@ -21,9 +21,9 @@ struct semid64_ds {
> >   unsigned long   sem_ctime;  /* last change time */
> >   unsigned long   sem_ctime_high;
> >  #else
> > - __kernel_time_t sem_otime;  /* last semop time */
> > + longsem_otime;  /* last semop time */
> >   __kernel_ulong_t __unused1;
> > - __kernel_time_t sem_ctime;  /* last change time */
> > + longsem_ctime;  /* last change time */
> >   __kernel_ulong_t __unused2;
> >  #endif
> >   __kernel_ulong_t sem_nsems; /* no. of semaphores in array */
> [...]
>
> We need to use __kernel_long_t here to do the right thing on x32.

Good catch, thanks for the review!

I applied the patch below now on top.

   Arnd

commit c7ebd8a1c1825c3197732ea692cf3dde34a644f5 (HEAD)
Author: Arnd Bergmann 
Date:   Thu Nov 21 15:25:04 2019 +0100

y2038: ipc: fix x32 ABI breakage

The correct type on x32 is 64-bit wide, same as for the other struct
members around it, so use  __kernel_long_t in place of the original
__kernel_time_t here, corresponding to the rest of the structure.

Fixes: caf5e32d4ea7 ("y2038: ipc: remove __kernel_time_t reference
from headers")
Reported-by: Ben Hutchings 
Signed-off-by: Arnd Bergmann 

diff --git a/arch/x86/include/uapi/asm/sembuf.h
b/arch/x86/include/uapi/asm/sembuf.h
index 7c1b156695ba..20cab43c4b15 100644
--- a/arch/x86/include/uapi/asm/sembuf.h
+++ b/arch/x86/include/uapi/asm/sembuf.h
@@ -21,9 +21,9 @@ struct semid64_ds {
unsigned long   sem_ctime;  /* last change time */
unsigned long   sem_ctime_high;
 #else
-   longsem_otime;  /* last semop time */
+   __kernel_long_t sem_otime;  /* last semop time */
__kernel_ulong_t __unused1;
-   longsem_ctime;  /* last change time */
+   __kenrel_long_t sem_ctime;  /* last change time */
__kernel_ulong_t __unused2;
 #endif
__kernel_ulong_t sem_nsems; /* no. of semaphores in array */
___
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038


Re: [Y2038] [PATCH 08/23] y2038: ipc: remove __kernel_time_t reference from headers

2019-11-20 Thread Ben Hutchings
On Fri, 2019-11-08 at 22:07 +0100, Arnd Bergmann wrote:
[...]
> --- a/arch/x86/include/uapi/asm/sembuf.h
> +++ b/arch/x86/include/uapi/asm/sembuf.h
> @@ -21,9 +21,9 @@ struct semid64_ds {
>   unsigned long   sem_ctime;  /* last change time */
>   unsigned long   sem_ctime_high;
>  #else
> - __kernel_time_t sem_otime;  /* last semop time */
> + longsem_otime;  /* last semop time */
>   __kernel_ulong_t __unused1;
> - __kernel_time_t sem_ctime;  /* last change time */
> + longsem_ctime;  /* last change time */
>   __kernel_ulong_t __unused2;
>  #endif
>   __kernel_ulong_t sem_nsems; /* no. of semaphores in array */
[...]

We need to use __kernel_long_t here to do the right thing on x32.

Ben.

-- 
Ben Hutchings, Software Developer Codethink Ltd
https://www.codethink.co.uk/ Dale House, 35 Dale Street
 Manchester, M1 2HF, United Kingdom

___
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038