Commit 9b50898a authored by Takashi Iwai's avatar Takashi Iwai

ALSA: seq: Fix time account regression

The recent rewrite of the sequencer time accounting using timespec64
in the commit [3915bf29: ALSA: seq_timer: use monotonic times
internally] introduced a bad regression.  Namely, the time reported
back doesn't increase but goes back and forth.

The culprit was obvious: the delta is stored to the result (cur_time =
delta), instead of adding the delta (cur_time += delta)!

Let's fix it.

Fixes: 3915bf29 ('ALSA: seq_timer: use monotonic times internally')
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=177571Reported-by: default avatarYves Guillemot <yc.guillemot@wanadoo.fr>
Cc: <stable@vger.kernel.org> # v4.8+
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 1a3f0991
...@@ -448,8 +448,8 @@ snd_seq_real_time_t snd_seq_timer_get_cur_time(struct snd_seq_timer *tmr) ...@@ -448,8 +448,8 @@ snd_seq_real_time_t snd_seq_timer_get_cur_time(struct snd_seq_timer *tmr)
ktime_get_ts64(&tm); ktime_get_ts64(&tm);
tm = timespec64_sub(tm, tmr->last_update); tm = timespec64_sub(tm, tmr->last_update);
cur_time.tv_nsec = tm.tv_nsec; cur_time.tv_nsec += tm.tv_nsec;
cur_time.tv_sec = tm.tv_sec; cur_time.tv_sec += tm.tv_sec;
snd_seq_sanity_real_time(&cur_time); snd_seq_sanity_real_time(&cur_time);
} }
spin_unlock_irqrestore(&tmr->lock, flags); spin_unlock_irqrestore(&tmr->lock, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment