diff options
author | Dongliang Mu <mudongliangabcd@gmail.com> | 2021-06-02 06:41:36 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2021-06-02 10:37:40 +0300 |
commit | 3ae72f6ab9c1f688bd578cdc252dabce65fdaf57 (patch) | |
tree | c3694714a831de24cb128a1d9533aed72ce39826 /sound/spi/Kconfig | |
parent | 901be145a46eb79879367d853194346a549e623d (diff) | |
download | linux-3ae72f6ab9c1f688bd578cdc252dabce65fdaf57.tar.xz |
ALSA: control led: fix memory leak in snd_ctl_led_register
The snd_ctl_led_sysfs_add and snd_ctl_led_sysfs_remove should contain
the refcount operations in pair. However, snd_ctl_led_sysfs_remove fails
to decrease the refcount to zero, which causes device_release never to
be invoked. This leads to memory leak to some resources, like struct
device_private. In addition, we also free some other similar memory
leaks in snd_ctl_led_init/snd_ctl_led_exit.
Fix this by replacing device_del to device_unregister
in snd_ctl_led_sysfs_remove/snd_ctl_led_init/snd_ctl_led_exit.
Note that, when CONFIG_DEBUG_KOBJECT_RELEASE is enabled, put_device will
call kobject_release and delay the release of kobject, which will cause
use-after-free when the memory backing the kobject is freed at once.
Reported-by: syzbot+08a7d8b51ea048a74ffb@syzkaller.appspotmail.com
Fixes: a135dfb5de15 ("ALSA: led control - add sysfs kcontrol LED marking layer")
Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Link: https://lore.kernel.org/r/20210602034136.2762497-1-mudongliangabcd@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/spi/Kconfig')
0 files changed, 0 insertions, 0 deletions