]> git.baikalelectronics.ru Git - kernel.git/commit
ALSA: pcm: Return -EBUSY for OSS ioctls changing busy streams
authorTakashi Iwai <tiwai@suse.de>
Fri, 23 Mar 2018 07:03:26 +0000 (08:03 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 23 Mar 2018 21:18:05 +0000 (22:18 +0100)
commitfe32bc9f1f6085a82116230ac3cdd80ed8ad49ed
tree229da33d93b78fe63bab43877449301d32855af2
parent4fac43d30a639f95d15481454ef73609d26d1a2e
ALSA: pcm: Return -EBUSY for OSS ioctls changing busy streams

OSS PCM stream management isn't modal but it allows ioctls issued at
any time for changing the parameters.  In the previous hardening
patch ("ALSA: pcm: Avoid potential races between OSS ioctls and
read/write"), we covered these races and prevent the corruption by
protecting the concurrent accesses via params_lock mutex.  However,
this means that some ioctls that try to change the stream parameter
(e.g. channels or format) would be blocked until the read/write
finishes, and it may take really long.

Basically changing the parameter while reading/writing is an invalid
operation, hence it's even more user-friendly from the API POV if it
returns -EBUSY in such a situation.

This patch adds such checks in the relevant ioctls with the addition
of read/write access refcount.

Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/pcm_oss.h
sound/core/oss/pcm_oss.c