summaryrefslogtreecommitdiff
path: root/include/sound/core.h
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2014-06-18 13:32:31 +0200
committerWilly Tarreau <w@1wt.eu>2014-11-23 10:55:36 +0100
commit883f30e7d98d97d704df38cd2972a33be852f23a (patch)
tree308e857429c3c3cd1674977a6e5b4f9a656b2e14 /include/sound/core.h
parentcd684d88d3f89954322b3d15fc26b2055d542784 (diff)
ALSA: control: Protect user controls against concurrent access
[ Upstream commit 07f4d9d74a04aa7c72c5dae0ef97565f28f17b92 ] The user-control put and get handlers as well as the tlv do not protect against concurrent access from multiple threads. Since the state of the control is not updated atomically it is possible that either two write operations or a write and a read operation race against each other. Both can lead to arbitrary memory disclosure. This patch introduces a new lock that protects user-controls from concurrent access. Since applications typically access controls sequentially than in parallel a single lock per card should be fine. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Jaroslav Kysela <perex@perex.cz> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de> [wt: fixes CVE-2014-4652] Signed-off-by: Willy Tarreau <w@1wt.eu>
Diffstat (limited to 'include/sound/core.h')
-rw-r--r--include/sound/core.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/sound/core.h b/include/sound/core.h
index a61499c22b0b..3ad641cdc735 100644
--- a/include/sound/core.h
+++ b/include/sound/core.h
@@ -120,6 +120,8 @@ struct snd_card {
int user_ctl_count; /* count of all user controls */
struct list_head controls; /* all controls for this card */
struct list_head ctl_files; /* active control files */
+ struct mutex user_ctl_lock; /* protects user controls against
+ concurrent access */
struct snd_info_entry *proc_root; /* root for soundcard specific files */
struct snd_info_entry *proc_id; /* the card id */