diff options
author | Jaroslav Kysela <perex@perex.cz> | 2021-04-14 12:58:58 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2021-04-14 14:23:05 +0200 |
commit | 543f8d780867bdbd8b0792487fa1644d89faa19c (patch) | |
tree | be619c0fe3ce0628e469eb5a3e3d33b971467b3e /sound/core | |
parent | d2e8f641257d0d3af6e45d6ac2d6f9d56b8ea964 (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 <nathan@kernel.org>
Cc: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Link: https://lore.kernel.org/r/20210414105858.1937710-1-perex@perex.cz
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core')
-rw-r--r-- | sound/core/control_led.c | 8 |
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; |