ALSA: timer: Assure timer resolution access always locked
authorTakashi Iwai <tiwai@suse.de>
Wed, 16 May 2018 21:52:42 +0000 (23:52 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 18 May 2018 06:49:13 +0000 (08:49 +0200)
commit9d4d207d1346329c5295420254f1dbef1a6ab6ba
tree5fcb084352753cfd57e434768cbdb1f774257030
parent21244e3d6a9d36f32a2aa40f8948324c7b5f35b0
ALSA: timer: Assure timer resolution access always locked

There are still many places calling the timer's hw.c_resolution
callback without lock, and this may lead to some races, as we faced in
the commit a820ccbe21e8 ("ALSA: pcm: Fix UAF at PCM release via PCM
timer access").

This patch changes snd_timer_resolution() to take the timer->lock for
avoiding the races.  A place calling this function already inside the
lock (from the notifier) is replaced with the
snd_timer_hw_resolution() accordingly, as well as wrapping with the
lock around another place calling snd_timer_hw_resolution(), too.

Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/timer.c