Re: [RFC PATCH 6/7] uapi: sound: Avoid using timespec for struct snd_ctl_elem_value

From: Baolin Wang
Date: Tue Sep 26 2017 - 17:54:59 EST


On 21 September 2017 at 20:58, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> On Thu, Sep 21, 2017 at 8:18 AM, Baolin Wang <baolin.wang@xxxxxxxxxx> wrote:
>> The struct snd_ctl_elem_value will use 'timespec' type variables to record
>> timestamp, which is not year 2038 safe on 32bits system.
>>
>> Since there are no drivers will implemented the tstamp member of the
>> struct snd_ctl_elem_value, and also the stucture size will not be changed
>> if we change timespec to s64 for tstamp member of struct snd_ctl_elem_value.
>>
>> Thus we can simply change timespec to s64 for tstamp member to avoid
>> using the type which is not year 2038 safe on 32bits system.
>>
>> Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxx>
>> ---
>> include/uapi/sound/asound.h | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/uapi/sound/asound.h b/include/uapi/sound/asound.h
>> index 1949923..71bce52 100644
>> --- a/include/uapi/sound/asound.h
>> +++ b/include/uapi/sound/asound.h
>> @@ -943,8 +943,8 @@ struct snd_ctl_elem_value {
>> } bytes;
>> struct snd_aes_iec958 iec958;
>> } value; /* RO */
>> - struct timespec tstamp;
>> - unsigned char reserved[128-sizeof(struct timespec)];
>> + struct { s64 tv_sec; s64 tv_nsec; } tstamp;
>> + unsigned char reserved[128-sizeof(struct { s64 tv_sec; s64 tv_nsec; })];
>> };
>
> Maybe we should enforce that nobody uses the timespec field, by
> enclosing it in #ifdef __KERNEL__ (with a matching length below it);

OK.

--
Baolin.wang
Best Regards