• Baolin Wang's avatar
    ALSA: Avoid using timespec for struct snd_timer_tread · 07094ae6
    Baolin Wang authored
    The struct snd_timer_tread will use 'timespec' type variables to record
    timestamp, which is not year 2038 safe on 32bits system.
    
    Since the struct snd_timer_tread is passed through read() rather than
    ioctl(), and the read syscall has no command number that lets us pick
    between the 32-bit or 64-bit version of this structure.
    
    Thus we introduced one new command SNDRV_TIMER_IOCTL_TREAD64 and new
    struct snd_timer_tread64 replacing timespec with s64 type to handle
    64bit time_t. That means we will set tu->tread = TREAD_FORMAT_64BIT
    when user space has a 64bit time_t, then we will copy to user with
    struct snd_timer_tread64. Otherwise we will use 32bit time_t variables
    when copying to user.
    
    Moreover this patch replaces timespec type with timespec64 type and
    related y2038 safe APIs.
    Signed-off-by: default avatarBaolin Wang <baolin.wang@linaro.org>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    07094ae6
timer.c 58.3 KB