UPSTREAM: ALSA: seq: More protection for concurrent write and ioctl races

This patch is an attempt for further hardening against races between
the concurrent write and ioctls.  The previous fix d15d662e89fc
("ALSA: seq: Fix racy pool initializations") covered the race of the
pool initialization at writer and the pool resize ioctl by the
client->ioctl_mutex (CVE-2018-1000004).  However, basically this mutex
should be applied more widely to the whole write operation for
avoiding the unexpected pool operations by another thread.

The only change outside snd_seq_write() is the additional mutex
argument to helper functions, so that we can unlock / relock the given
mutex temporarily during schedule() call for blocking write.

BUG=834716
TEST=None

Change-Id: I0a61b4fe60d1b01d7459aefe6572fdf75e7c988c
Fixes: d15d662e89fc ("ALSA: seq: Fix racy pool initializations")
Reported-by:  <long7573@126.com>
Reported-by: Nicolai Stange <nstange@suse.de>
Reviewed-and-tested-by: Nicolai Stange <nstange@suse.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
(cherry picked from commit 7bd80091567789f1c0cb70eb4737aac8bcd2b6b9)
Signed-off-by: Zubin Mithra <zsm@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1019566
Reviewed-by: Guenter Roeck <groeck@chromium.org>
(cherry picked from commit 9de37119845359814588ee533d8bfec182980f42)
Reviewed-on: https://chromium-review.googlesource.com/1024597
4 files changed