lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 08 Jul 2015 23:36:57 +0200
From:	Arnd Bergmann <arnd@...db.de>
To:	Bamvor Zhang Jian <bamvor.zhangjian@...aro.org>
Cc:	john.stultz@...aro.org, tglx@...utronix.de, y2038@...ts.linaro.org,
	linux-kernel@...r.kernel.org
Subject: Re: [RFC PATCH v2 4/4] y2038: convert ppdev to 2038 safe

On Monday 29 June 2015 22:23:27 Bamvor Zhang Jian wrote:
> diff --git a/include/uapi/linux/ppdev.h b/include/uapi/linux/ppdev.h
> index dc18c5d..d62a47d 100644
> --- a/include/uapi/linux/ppdev.h
> +++ b/include/uapi/linux/ppdev.h
> @@ -74,8 +74,18 @@ struct ppdev_frob_struct {
>  #define PPSETPHASE     _IOW(PP_IOCTL, 0x94, int)
>  
>  /* Set and get port timeout (struct timeval's) */
> -#define PPGETTIME      _IOR(PP_IOCTL, 0x95, struct timeval)
> -#define PPSETTIME      _IOW(PP_IOCTL, 0x96, struct timeval)
> +/* Force application use 64 time_t ioctl */
> +/* TODO: It is an open question about we should use a __xxx_timeval or an
> + * implicit array.
> + * replace struct __kernel_timeval with __s32[4]
> + * replace struct compat_timeval with __s32[2]
> + */
> +#define PPGETTIME      PPGETTIME64
> +#define PPSETTIME      PPSETTIME64
> +#define PPGETTIME64    _IOR(PP_IOCTL, 0x95, struct __kernel_timeval)
> +#define PPSETTIME64    _IOW(PP_IOCTL, 0x96, struct __kernel_timeval)
> +#define PPGETTIME32    _IOR(PP_IOCTL, 0x9c, struct __kernel_compat_timeval)
> +#define PPSETTIME32    _IOW(PP_IOCTL, 0x9d, struct __kernel_compat_timeval)

As commented before, these definitions should probably not be part of the
user-visible header file.

The main reason for using an __s64[2] array instead of struct __kernel_timeval
is to avoid adding __kernel_timeval: 'timeval' is thoroughly deprecated
and we don't want to establish new interfaces with that.

In case of this driver, nobody would ever want to change their user
space to use a 64-bit __kernel_timeval instead of timeval and explicitly
call PPGETTIME64 instead of PPGETTIME, because we are only dealing with
an interval here, and a 32-bit second value is sufficient to represent
that. Instead, the purpose of your patch is to make the kernel cope with
user space that happens to use a 64-bit time_t based definition of 
'struct timeval' and passes that to the ioctl.

	Arnd

[re-sent with fixed y2038 list]
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ