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

usb: gadget: midi2: Fix interpretation of is_midi1 bits

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>

authored by

Takashi Iwai and committed by
Greg Kroah-Hartman
82937056 a4faee01

+5 -1
+5 -1
drivers/usb/gadget/function/f_midi2.c
··· 1591 1591 fb->info.midi_ci_version = b->midi_ci_version; 1592 1592 fb->info.ui_hint = reverse_dir(b->ui_hint); 1593 1593 fb->info.sysex8_streams = b->sysex8_streams; 1594 - fb->info.flags |= b->is_midi1; 1594 + if (b->is_midi1 < 2) 1595 + fb->info.flags |= b->is_midi1; 1596 + else 1597 + fb->info.flags |= SNDRV_UMP_BLOCK_IS_MIDI1 | 1598 + SNDRV_UMP_BLOCK_IS_LOWSPEED; 1595 1599 strscpy(fb->info.name, ump_fb_name(b), 1596 1600 sizeof(fb->info.name)); 1597 1601 }