Commit 87654292 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: seq: Check UMP support for midi_version change

When the kernel is built without UMP support but a user-space app
requires the midi_version > 0, the kernel should return an error.
Otherwise user-space assumes as if it were possible to deal,
eventually hitting serious errors later.

Fixes: 46397622 ("ALSA: seq: Add UMP support")
Cc: <stable@vger.kernel.org>
Link: https://patch.msgid.link/20241231145358.21946-1-tiwai@suse.de


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 7b509910
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -1275,11 +1275,17 @@ static int snd_seq_ioctl_set_client_info(struct snd_seq_client *client,
	if (client->type != client_info->type)
		return -EINVAL;

	if (client->user_pversion >= SNDRV_PROTOCOL_VERSION(1, 0, 3)) {
		/* check validity of midi_version field */
	if (client->user_pversion >= SNDRV_PROTOCOL_VERSION(1, 0, 3) &&
	    client_info->midi_version > SNDRV_SEQ_CLIENT_UMP_MIDI_2_0)
		if (client_info->midi_version > SNDRV_SEQ_CLIENT_UMP_MIDI_2_0)
			return -EINVAL;

		/* check if UMP is supported in kernel */
		if (!IS_ENABLED(CONFIG_SND_SEQ_UMP) &&
		    client_info->midi_version > 0)
			return -EINVAL;
	}

	/* fill the info fields */
	if (client_info->name[0])
		strscpy(client->name, client_info->name, sizeof(client->name));