Takashi Iwai
33061d0fba
ALSA: pcm: Fix races among concurrent hw_params and hw_free calls
...
commit 92ee3c60ec9fe64404dc035e7c41277d74aa26cb upstream.
Currently we have neither proper check nor protection against the
concurrent calls of PCM hw_params and hw_free ioctls, which may result
in a UAF. Since the existing PCM stream lock can't be used for
protecting the whole ioctl operations, we need a new mutex to protect
those racy calls.
This patch introduced a new mutex, runtime->buffer_mutex, and applies
it to both hw_params and hw_free ioctl code paths. Along with it, the
both functions are slightly modified (the mmap_count check is moved
into the state-check block) for code simplicity.
Reported-by: Hu Jiahui <kirin.say@gmail.com>
Cc: <stable@vger.kernel.org>
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Link: https://lore.kernel.org/r/20220322170720.3529-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-03-28 09:58:43 +02:00
..
2018-07-02 10:56:09 +01:00
2021-02-10 17:17:13 +00:00
2020-01-03 09:24:08 +01:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:25:18 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-06-19 17:09:55 +02:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2021-07-15 10:22:30 +02:00
2021-03-30 15:33:58 +02:00
2021-07-19 16:16:34 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-02-08 13:00:28 +00:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:37 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:35 -07:00
2021-02-05 17:16:41 +00:00
2019-05-30 11:26:35 -07:00
2021-07-19 16:16:56 +02:00
2019-05-30 11:26:35 -07:00
2021-07-19 16:17:14 +02:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2021-08-05 08:24:17 +02:00
2021-04-20 17:25:45 +01:00
2020-07-07 11:59:59 +02:00
2017-11-02 11:10:55 +01:00
2022-01-27 11:04:05 +01:00
2019-02-08 16:58:59 +01:00
2019-05-24 17:27:10 +02:00
2018-07-17 22:25:48 +02:00
2021-03-19 16:54:58 +01:00
2020-01-13 13:40:41 +01:00
2019-01-14 19:52:23 +01:00
2021-11-25 09:49:08 +01:00
2021-02-08 15:56:35 +01:00
2021-06-10 11:48:56 +02:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2020-01-03 09:24:18 +01:00
2020-01-05 16:14:26 +01:00
2020-11-19 18:24:35 +00:00
2021-03-02 10:22:47 +01:00
2021-02-02 10:37:07 +01:00
2017-11-02 11:10:55 +01:00
2019-06-26 12:27:50 +01:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2021-08-04 08:07:58 +02:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2020-07-19 20:49:25 +02:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2017-11-02 11:10:55 +01:00
2021-06-08 17:05:41 +02:00
2019-05-30 11:26:35 -07:00
2020-09-09 18:43:07 +02:00
2019-05-24 17:36:45 +02:00
2022-03-28 09:58:43 +02:00
2019-05-30 11:26:35 -07:00
2021-08-04 08:08:21 +02:00
2021-09-23 09:26:40 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-11-05 17:25:17 +00:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-11-13 14:22:09 +00:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2020-01-03 09:24:19 +01:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-06-19 17:09:55 +02:00
2018-08-02 10:56:59 +01:00
2021-04-20 17:25:45 +01:00
2018-07-02 10:52:47 +01:00
2017-11-13 15:45:57 +01:00
2020-12-09 16:52:04 +00:00
2021-04-12 17:05:51 +01:00
2020-05-30 02:11:42 +01:00
2021-04-16 14:34:12 +01:00
2021-06-07 15:55:12 +01:00
2020-06-25 19:21:01 +01:00
2021-08-30 12:15:15 +01:00
2020-11-30 12:54:02 +00:00
2020-12-09 12:13:38 +00:00
2021-11-18 19:16:55 +01:00
2021-07-16 13:54:58 +01:00
2021-07-11 23:48:30 +01:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:41 -07:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:35 -07:00
2020-09-09 18:32:52 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:35 -07:00
2019-06-05 17:37:07 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:35 -07:00
2020-01-03 09:24:20 +01:00
2019-05-30 11:26:35 -07:00
2019-05-30 11:26:32 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-10-25 11:06:57 +01:00
2019-05-30 11:26:32 -07:00
2020-06-15 20:58:33 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:35 -07:00