Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: control: Avoid WARN() for symlink errors

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>

+10 -4
+10 -4
sound/core/control_led.c
··· 668 668 goto cerr; 669 669 led->cards[card->number] = led_card; 670 670 snprintf(link_name, sizeof(link_name), "led-%s", led->name); 671 - WARN(sysfs_create_link(&card->ctl_dev->kobj, &led_card->dev.kobj, link_name), 672 - "can't create symlink to controlC%i device\n", card->number); 673 - WARN(sysfs_create_link(&led_card->dev.kobj, &card->card_dev.kobj, "card"), 674 - "can't create symlink to card%i\n", card->number); 671 + if (sysfs_create_link(&card->ctl_dev->kobj, &led_card->dev.kobj, 672 + link_name)) 673 + dev_err(card->dev, 674 + "%s: can't create symlink to controlC%i device\n", 675 + __func__, card->number); 676 + if (sysfs_create_link(&led_card->dev.kobj, &card->card_dev.kobj, 677 + "card")) 678 + dev_err(card->dev, 679 + "%s: can't create symlink to card%i\n", 680 + __func__, card->number); 675 681 676 682 continue; 677 683 cerr: