Skip to content

Commit 077c593

Browse files
committed
ALSA: hda: Avoid WARN_ON() for HDMI chmap slot checks
At parsing the channel mapping for HDMI, the current code may spew WARN_ON() unnecessarily for the case where only invalid (zero) channel maps are given from the hardware. Drop WARN_ON() and reorganize the code a bit for avoiding the hdmi_slot over the array size. Closes: https://bugzilla.kernel.org/show_bug.cgi?id=221390 Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20260428061800.80527-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent 2d80392 commit 077c593

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

sound/hda/core/hdmi_chmap.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -353,13 +353,16 @@ static void hdmi_std_setup_channel_mapping(struct hdac_chmap *chmap,
353353
if (hdmi_channel_mapping[ca][1] == 0) {
354354
int hdmi_slot = 0;
355355
/* fill actual channel mappings in ALSA channel (i) order */
356-
for (i = 0; i < ch_alloc->channels; i++) {
357-
while (!WARN_ON(hdmi_slot >= 8) &&
358-
!ch_alloc->speakers[7 - hdmi_slot])
359-
hdmi_slot++; /* skip zero slots */
356+
for (i = 0; i < ch_alloc->channels && hdmi_slot < 8; i++) {
357+
while (!ch_alloc->speakers[7 - hdmi_slot]) {
358+
/* skip zero slots */
359+
if (++hdmi_slot >= 8)
360+
goto out;
361+
}
360362

361363
hdmi_channel_mapping[ca][i] = (i << 4) | hdmi_slot++;
362364
}
365+
out:
363366
/* fill the rest of the slots with ALSA channel 0xf */
364367
for (hdmi_slot = 0; hdmi_slot < 8; hdmi_slot++)
365368
if (!ch_alloc->speakers[7 - hdmi_slot])

0 commit comments

Comments
 (0)