[alsa-devel] [PATCH] ALSA: timer: fix nsec/sec initialization confusion

Arnd Bergmann arnd at arndb.de
Sat Jan 11 21:41:45 CET 2020


On Sat, Jan 11, 2020 at 9:33 PM Pierre-Louis Bossart
<pierre-louis.bossart at linux.intel.com> wrote:
>
> GCC reports a warning with W=1:
>
> sound/core/timer.c: In function ‘snd_timer_user_read’:
> sound/core/timer.c:2219:19: warning: initialized field overwritten
> [-Woverride-init]
>  2219 |     .tstamp_sec = tread->tstamp_nsec,
>       |                   ^~~~~
> sound/core/timer.c:2219:19: note: (near initialization for
> ‘(anonymous).tstamp_sec’)
>
> Assigning nsec values to sec fields is problematic in general, even
> more so when the initial goal was to survive the 2030 timer
> armageddon.
>
> Fix by using the proper field in the initialization
>
> Cc: Baolin Wang <baolin.wang at linaro.org>
> Cc: Arnd Bergmann <arnd at arndb.de>

Good catch!

Acked-by: Arnd Bergmann <arnd at arndb.de>

> Fixes: 07094ae6f9527 ("ALSA: Avoid using timespec for struct snd_timer_tread")
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> ---
>  sound/core/timer.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sound/core/timer.c b/sound/core/timer.c
> index 8835ff91a893..d9f85f2d66a3 100644
> --- a/sound/core/timer.c
> +++ b/sound/core/timer.c
> @@ -2216,7 +2216,7 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer,
>                         tread32 = (struct snd_timer_tread32) {
>                                 .event = tread->event,
>                                 .tstamp_sec = tread->tstamp_sec,
> -                               .tstamp_sec = tread->tstamp_nsec,
> +                               .tstamp_nsec = tread->tstamp_nsec,
>                                 .val = tread->val,
>                         };
>
> --
> 2.20.1
>


More information about the Alsa-devel mailing list