ALSA: timer: Fix race between read and ioctl
authorTakashi Iwai <tiwai@suse.de>
Fri, 2 Jun 2017 13:03:38 +0000 (15:03 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 19 Sep 2017 01:34:05 +0000 (02:34 +0100)
commit01ac4446d4cd44a37df74f6edf0b89c7f071e298
tree737dbe0b0cb25530b31ef9947822f5ad9d113ffd
parent3e081bd8086dc9334b4445cf78fd8555994fbcf7
ALSA: timer: Fix race between read and ioctl

The read from ALSA timer device, the function snd_timer_user_tread(),
may access to an uninitialized struct snd_timer_user fields when the
read is concurrently performed while the ioctl like
snd_timer_user_tselect() is invoked.  We have already fixed the races
among ioctls via a mutex, but we seem to have forgotten the race
between read vs ioctl.

This patch simply applies (more exactly extends the already applied
range of) tu->ioctl_lock in snd_timer_user_tread() for closing the
race window.

Reported-by: Alexander Potapenko <glider@google.com>
Tested-by: Alexander Potapenko <glider@google.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Gbp-Pq: Topic bugfix/all
Gbp-Pq: Name alsa-timer-fix-race-between-read-and-ioctl.patch
sound/core/timer.c