aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <[email protected]>2021-04-14 12:58:58 +0200
committerTakashi Iwai <[email protected]>2021-04-14 14:23:05 +0200
commit543f8d780867bdbd8b0792487fa1644d89faa19c (patch)
treebe619c0fe3ce0628e469eb5a3e3d33b971467b3e
parentd2e8f641257d0d3af6e45d6ac2d6f9d56b8ea964 (diff)
ALSA: control_led - fix the stack usage (control element ops)
It's a bad idea to allocate big structures on the stack. Mark the variables as static and add a note for the locking. Fixes: 22d8de62f11b ("ALSA: control - add generic LED trigger module as the new control layer") Cc: Nathan Chancellor <[email protected]> Cc: Takashi Sakamoto <[email protected]> Signed-off-by: Jaroslav Kysela <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Takashi Iwai <[email protected]>
-rw-r--r--sound/core/control_led.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sound/core/control_led.c b/sound/core/control_led.c
index 93b201063c7d..25f57c14f294 100644
--- a/sound/core/control_led.c
+++ b/sound/core/control_led.c
@@ -94,11 +94,15 @@ static struct snd_ctl_led *snd_ctl_led_get_by_access(unsigned int access)
return &snd_ctl_leds[group];
}
+/*
+ * A note for callers:
+ * The two static variables info and value are protected using snd_ctl_led_mutex.
+ */
static int snd_ctl_led_get(struct snd_ctl_led_ctl *lctl)
{
+ static struct snd_ctl_elem_info info;
+ static struct snd_ctl_elem_value value;
struct snd_kcontrol *kctl = lctl->kctl;
- struct snd_ctl_elem_info info;
- struct snd_ctl_elem_value value;
unsigned int i;
int result;