All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, stable <stable@kernel.org>,
	Takashi Iwai <tiwai@suse.de>
Subject: [PATCH 6.10 07/29] usb: gadget: midi2: Fix incorrect default MIDI2 protocol setup
Date: Thu, 25 Jul 2024 16:36:23 +0200	[thread overview]
Message-ID: <20240725142732.094747026@linuxfoundation.org> (raw)
In-Reply-To: <20240725142731.814288796@linuxfoundation.org>

6.10-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Takashi Iwai <tiwai@suse.de>

commit 3eb27d3e32c78badbc4db6ae76614b5961e32291 upstream.

The MIDI2 gadget driver handled the default MIDI protocol version
incorrectly due to the confusion of the protocol version passed via
configfs (either 1 or 2) and UMP protocol bits (0x100 / 0x200).
As a consequence, the default protocol always resulted in MIDI1.

This patch addresses the misunderstanding of the protocol handling.

Fixes: 29ee7a4dddd5 ("usb: gadget: midi2: Add configfs support")
Cc: stable <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20240708095719.25627-1-tiwai@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/usb/gadget/function/f_midi2.c |   19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

--- a/drivers/usb/gadget/function/f_midi2.c
+++ b/drivers/usb/gadget/function/f_midi2.c
@@ -150,6 +150,9 @@ struct f_midi2 {
 
 #define func_to_midi2(f)	container_of(f, struct f_midi2, func)
 
+/* convert from MIDI protocol number (1 or 2) to SNDRV_UMP_EP_INFO_PROTO_* */
+#define to_ump_protocol(v)	(((v) & 3) << 8)
+
 /* get EP name string */
 static const char *ump_ep_name(const struct f_midi2_ep *ep)
 {
@@ -564,8 +567,7 @@ static void reply_ump_stream_ep_config(s
 		.status = UMP_STREAM_MSG_STATUS_STREAM_CFG,
 	};
 
-	if ((ep->info.protocol & SNDRV_UMP_EP_INFO_PROTO_MIDI_MASK) ==
-	    SNDRV_UMP_EP_INFO_PROTO_MIDI2)
+	if (ep->info.protocol == 2)
 		rep.protocol = UMP_STREAM_MSG_EP_INFO_CAP_MIDI2 >> 8;
 	else
 		rep.protocol = UMP_STREAM_MSG_EP_INFO_CAP_MIDI1 >> 8;
@@ -627,13 +629,13 @@ static void process_ump_stream_msg(struc
 		return;
 	case UMP_STREAM_MSG_STATUS_STREAM_CFG_REQUEST:
 		if (*data & UMP_STREAM_MSG_EP_INFO_CAP_MIDI2) {
-			ep->info.protocol = SNDRV_UMP_EP_INFO_PROTO_MIDI2;
+			ep->info.protocol = 2;
 			DBG(midi2, "Switching Protocol to MIDI2\n");
 		} else {
-			ep->info.protocol = SNDRV_UMP_EP_INFO_PROTO_MIDI1;
+			ep->info.protocol = 1;
 			DBG(midi2, "Switching Protocol to MIDI1\n");
 		}
-		snd_ump_switch_protocol(ep->ump, ep->info.protocol);
+		snd_ump_switch_protocol(ep->ump, to_ump_protocol(ep->info.protocol));
 		reply_ump_stream_ep_config(ep);
 		return;
 	case UMP_STREAM_MSG_STATUS_FB_DISCOVERY:
@@ -1065,7 +1067,8 @@ static void f_midi2_midi1_ep_out_complet
 		group = midi2->out_cable_mapping[cable].group;
 		bytes = midi1_packet_bytes[*buf & 0x0f];
 		for (c = 0; c < bytes; c++) {
-			snd_ump_convert_to_ump(cvt, group, ep->info.protocol,
+			snd_ump_convert_to_ump(cvt, group,
+					       to_ump_protocol(ep->info.protocol),
 					       buf[c + 1]);
 			if (cvt->ump_bytes) {
 				snd_ump_receive(ep->ump, cvt->ump,
@@ -1375,7 +1378,7 @@ static void assign_block_descriptors(str
 			desc->nNumGroupTrm = b->num_groups;
 			desc->iBlockItem = ep->blks[blk].string_id;
 
-			if (ep->info.protocol & SNDRV_UMP_EP_INFO_PROTO_MIDI2)
+			if (ep->info.protocol == 2)
 				desc->bMIDIProtocol = USB_MS_MIDI_PROTO_2_0;
 			else
 				desc->bMIDIProtocol = USB_MS_MIDI_PROTO_1_0_128;
@@ -1552,7 +1555,7 @@ static int f_midi2_create_card(struct f_
 		if (midi2->info.static_block)
 			ump->info.flags |= SNDRV_UMP_EP_INFO_STATIC_BLOCKS;
 		ump->info.protocol_caps = (ep->info.protocol_caps & 3) << 8;
-		ump->info.protocol = (ep->info.protocol & 3) << 8;
+		ump->info.protocol = to_ump_protocol(ep->info.protocol);
 		ump->info.version = 0x0101;
 		ump->info.family_id = ep->info.family;
 		ump->info.model_id = ep->info.model;



  parent reply	other threads:[~2024-07-25 14:39 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-25 14:36 [PATCH 6.10 00/29] 6.10.2-rc1 review Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 01/29] drm/amdgpu: Fix signedness bug in sdma_v4_0_process_trap_irq() Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 02/29] s390/mm: Fix VM_FAULT_HWPOISON handling in do_exception() Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 03/29] ocfs2: add bounds checking to ocfs2_check_dir_entry() Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 04/29] jfs: dont walk off the end of ealist Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 05/29] fs/ntfs3: Add a check for attr_names and oatbl Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 06/29] fs/ntfs3: Validate ff offset Greg Kroah-Hartman
2024-07-25 14:36 ` Greg Kroah-Hartman [this message]
2024-07-25 14:36 ` [PATCH 6.10 08/29] ALSA: hda/tas2781: Add new quirk for Lenovo Hera2 Laptop Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 09/29] ALSA: hda/realtek: Enable headset mic on Positivo SU C1400 Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 10/29] ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book Pro 360 Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 11/29] arm64: dts: qcom: sc7180: Disable SuperSpeed instances in park mode Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 12/29] arm64: dts: qcom: sc7280: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 13/29] arm64: dts: qcom: x1e80100-qcp: Fix USB PHYs regulators Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 14/29] arm64: dts: qcom: qrb2210-rb1: switch I2C2 to i2c-gpio Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 15/29] arm64: dts: qcom: qrb4210-rb2: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 16/29] arm64: dts: qcom: x1e80100-crd: Fix the PHY regulator for PCIe 6a Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 17/29] arm64: dts: qcom: x1e80100-qcp: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 18/29] arm64: dts: qcom: x1e80100-crd: Fix USB PHYs regulators Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 19/29] arm64: dts: qcom: msm8996: Disable SS instance in Parkmode for USB Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 20/29] arm64: dts: qcom: sm6350: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 21/29] arm64: dts: qcom: msm8998: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 22/29] arm64: dts: qcom: ipq6018: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 23/29] arm64: dts: qcom: sdm630: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 24/29] arm64: dts: qcom: ipq8074: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 25/29] arm64: dts: qcom: sdm845: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 26/29] arm64: dts: qcom: sm6115: " Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 27/29] ALSA: pcm_dmaengine: Dont synchronize DMA channel when DMA is paused Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 28/29] ALSA: seq: ump: Skip useless ports for static blocks Greg Kroah-Hartman
2024-07-25 14:36 ` [PATCH 6.10 29/29] filelock: Fix fcntl/close race recovery compat path Greg Kroah-Hartman
2024-07-25 23:23 ` [PATCH 6.10 00/29] 6.10.2-rc1 review SeongJae Park
2024-07-26  0:35 ` Justin Forbes
2024-07-26  8:46 ` Ron Economos
2024-07-26 11:27 ` Mark Brown
2024-07-26 12:47 ` Rudi Heitbaum
2024-07-26 16:28 ` Shuah Khan
2024-07-26 17:18 ` Jon Hunter
2024-07-26 17:48 ` Naresh Kamboju
2024-07-26 18:29 ` Markus Reichelt
2024-07-26 20:37 ` Florian Fainelli
2024-07-26 21:27 ` Christian Heusel
2024-07-27  1:05 ` Peter Schneider

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240725142732.094747026@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=patches@lists.linux.dev \
    --cc=stable@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.