• Arnd Bergmann's avatar
    compat_ioctl: handle PPPIOCGIDLE for 64-bit time_t · 17c7e7f4
    Arnd Bergmann authored
    The ppp_idle structure is defined in terms of __kernel_time_t, which is
    defined as 'long' on all architectures, and this usage is not affected
    by the y2038 problem since it transports a time interval rather than an
    absolute time.
    
    However, the ppp user space defines the same structure as time_t, which
    may be 64-bit wide on new libc versions even on 32-bit architectures.
    
    It's easy enough to just handle both possible structure layouts on
    all architectures, to deal with the possibility that a user space ppp
    implementation comes with its own ppp_idle structure definition, as well
    as to document the fact that the driver is y2038-safe.
    
    Doing this also avoids the need for a special compat mode translation,
    since 32-bit and 64-bit kernels now support the same interfaces.  The old
    32-bit structure is also available on native 64-bit architectures now,
    but this is harmless.
    
    Cc: netdev@vger.kernel.org
    Cc: linux-ppp@vger.kernel.org
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    17c7e7f4
ppp_generic.c 79.7 KB