| From b2e538a9827dd04ab5273bf4be8eb2edb84357b0 Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Mon, 9 Dec 2024 10:56:12 +0100 |
| Subject: ALSA: control: Avoid WARN() for symlink errors |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit b2e538a9827dd04ab5273bf4be8eb2edb84357b0 upstream. |
| |
| Using WARN() for showing the error of symlink creations don't give |
| more information than telling that something goes wrong, since the |
| usual code path is a lregister callback from each control element |
| creation. More badly, the use of WARN() rather confuses fuzzer as if |
| it were serious issues. |
| |
| This patch downgrades the warning messages to use the normal dev_err() |
| instead of WARN(). For making it clearer, add the function name to |
| the prefix, too. |
| |
| Fixes: a135dfb5de15 ("ALSA: led control - add sysfs kcontrol LED marking layer") |
| Reported-by: syzbot+4e7919b09c67ffd198ae@syzkaller.appspotmail.com |
| Closes: https://lore.kernel.org/675664c7.050a0220.a30f1.018c.GAE@google.com |
| Link: https://patch.msgid.link/20241209095614.4273-1-tiwai@suse.de |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| [ Use card->ctl_dev.kobj to keep struct consistent. ] |
| Signed-off-by: Robert Garcia <rob_garcia@163.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| sound/core/control_led.c | 14 ++++++++++---- |
| 1 file changed, 10 insertions(+), 4 deletions(-) |
| |
| --- a/sound/core/control_led.c |
| +++ b/sound/core/control_led.c |
| @@ -688,10 +688,16 @@ static void snd_ctl_led_sysfs_add(struct |
| goto cerr; |
| led->cards[card->number] = led_card; |
| snprintf(link_name, sizeof(link_name), "led-%s", led->name); |
| - WARN(sysfs_create_link(&card->ctl_dev.kobj, &led_card->dev.kobj, link_name), |
| - "can't create symlink to controlC%i device\n", card->number); |
| - WARN(sysfs_create_link(&led_card->dev.kobj, &card->card_dev.kobj, "card"), |
| - "can't create symlink to card%i\n", card->number); |
| + if (sysfs_create_link(&card->ctl_dev.kobj, &led_card->dev.kobj, |
| + link_name)) |
| + dev_err(card->dev, |
| + "%s: can't create symlink to controlC%i device\n", |
| + __func__, card->number); |
| + if (sysfs_create_link(&led_card->dev.kobj, &card->card_dev.kobj, |
| + "card")) |
| + dev_err(card->dev, |
| + "%s: can't create symlink to card%i\n", |
| + __func__, card->number); |
| |
| continue; |
| cerr: |