]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
usb: gadget: midi2: Fix interpretation of is_midi1 bits
authorTakashi Iwai <tiwai@suse.de>
Wed, 27 Nov 2024 07:02:11 +0000 (08:02 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Dec 2024 15:26:34 +0000 (16:26 +0100)
The UMP Function Block info m1.0 field (represented by is_midi1 sysfs
entry) is an enumeration from 0 to 2, while the midi2 gadget driver
incorrectly copies it to the corresponding snd_ump_block_info.flags
bits as-is.  This made the wrong bit flags set when m1.0 = 2.

This patch corrects the wrong interpretation of is_midi1 bits.

Fixes: 29ee7a4dddd5 ("usb: gadget: midi2: Add configfs support")
Cc: stable@vger.kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20241127070213.8232-1-tiwai@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/f_midi2.c

index ee3d9e3578f791bd14393da3b9074b11ecd9023d..12e866fb311d63dcef2a1adc8fc313006f3537a9 100644 (file)
@@ -1591,7 +1591,11 @@ static int f_midi2_create_card(struct f_midi2 *midi2)
                        fb->info.midi_ci_version = b->midi_ci_version;
                        fb->info.ui_hint = reverse_dir(b->ui_hint);
                        fb->info.sysex8_streams = b->sysex8_streams;
-                       fb->info.flags |= b->is_midi1;
+                       if (b->is_midi1 < 2)
+                               fb->info.flags |= b->is_midi1;
+                       else
+                               fb->info.flags |= SNDRV_UMP_BLOCK_IS_MIDI1 |
+                                       SNDRV_UMP_BLOCK_IS_LOWSPEED;
                        strscpy(fb->info.name, ump_fb_name(b),
                                sizeof(fb->info.name));
                }