diff options
author | Baolin Wang <baolin.wang@linaro.org> | 2018-04-24 20:06:12 +0800 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2019-12-11 22:06:16 +0100 |
commit | d9e5582c4bb219f3459e39f65410f0e5128fbe91 (patch) | |
tree | 975313dbeab03ffd87b751735e64ece15aee2660 /include | |
parent | 3ddee7f88aaf2dee38f7016ac8fd48dd9fdb43e3 (diff) | |
download | linux-stable-d9e5582c4bb219f3459e39f65410f0e5128fbe91.tar.gz linux-stable-d9e5582c4bb219f3459e39f65410f0e5128fbe91.tar.bz2 linux-stable-d9e5582c4bb219f3459e39f65410f0e5128fbe91.zip |
ALSA: Avoid using timespec for struct snd_rawmidi_status
The struct snd_rawmidi_status will use 'timespec' type variables to record
timestamp, which is not year 2038 safe on 32bits system.
Thus we introduced 'struct snd_rawmidi_status32' and 'struct snd_rawmidi_status64'
to handle 32bit time_t and 64bit time_t in native mode, which replace
timespec with s64 type.
In compat mode, we renamed or introduced new structures to handle 32bit/64bit
time_t in compatible mode. The 'struct snd_rawmidi_status32' and
snd_rawmidi_ioctl_status32() are used to handle 32bit time_t in compat mode.
'struct compat_snd_rawmidi_status64' is used to handle 64bit time_t.
When glibc changes time_t to 64-bit, any recompiled program will issue ioctl
commands that the kernel does not understand without this patch.
Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/uapi/sound/asound.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/uapi/sound/asound.h b/include/uapi/sound/asound.h index d2c88c098b20..e0ada33afa1e 100644 --- a/include/uapi/sound/asound.h +++ b/include/uapi/sound/asound.h @@ -654,13 +654,16 @@ struct snd_rawmidi_params { unsigned char reserved[16]; /* reserved for future use */ }; +#ifndef __KERNEL__ struct snd_rawmidi_status { int stream; + __time_pad pad1; struct timespec tstamp; /* Timestamp */ size_t avail; /* available bytes */ size_t xruns; /* count of overruns since last status (in bytes) */ unsigned char reserved[16]; /* reserved for future use */ }; +#endif #define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int) #define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info) |