]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ALSA: ump: Don't enumeration invalid groups for legacy rawmidi
authorTakashi Iwai <tiwai@suse.de>
Mon, 4 Nov 2024 10:07:34 +0000 (11:07 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 4 Nov 2024 10:08:46 +0000 (11:08 +0100)
The legacy rawmidi tries to enumerate all possible UMP groups
belonging to the UMP endpoint.  But currently it shows all 16 ports
when the UMP endpoint is configured with static blocks, although most
of them may be unused.

There was already a fix for the sequencer client side to ignore such
groups in the commit 3bfd7c0ba184 ("ALSA: seq: ump: Skip useless ports
for static blocks"), and this commit is a similar fix for UMP
rawmidi devices; it adds simply the check for the validity of each
group that has been already parsed.  (Note that the group info was
moved to snd_ump_endpoint.groups[] by the commit 0642a3c5cacc0321c755
("ALSA: ump: Update substream name from assigned FB names")).

Link: https://patch.msgid.link/20241104100735.16127-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/ump.c

index cf22a17e38dd50308543e13aa5c70442b5cd9af5..7d59a0a9b037adf82670ea9026ebb4e6f4d006d0 100644 (file)
@@ -1233,7 +1233,7 @@ static int fill_legacy_mapping(struct snd_ump_endpoint *ump)
 
        num = 0;
        for (i = 0; i < SNDRV_UMP_MAX_GROUPS; i++)
-               if (group_maps & (1U << i))
+               if ((group_maps & (1U << i)) && ump->groups[i].valid)
                        ump->legacy_mapping[num++] = i;
 
        return num;