mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
ALSA: seq: ump: Fix seq port updates per FB info notify
update_port_infos() is called when a UMP FB Info update notification
is received, and this function is supposed to update the attributes of
the corresponding sequencer port. However, the function had a few
issues and it brought to the incorrect states. Namely:
- It tried to get a wrong sequencer info for the update without
correcting the port number with the group-offset 1
- The loop exited immediately when a sequencer port isn't present;
this ended up with the truncation if a sequencer port in the middle
goes away
This patch addresses those bugs.
Fixes: 4a16a3af05
("ALSA: seq: ump: Handle FB info update")
Link: https://patch.msgid.link/20241128170423.23351-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
2e5bf5b6d2
commit
aaa55faa24
@ -257,12 +257,12 @@ static void update_port_infos(struct seq_ump_client *client)
|
||||
continue;
|
||||
|
||||
old->addr.client = client->seq_client;
|
||||
old->addr.port = i;
|
||||
old->addr.port = ump_group_to_seq_port(i);
|
||||
err = snd_seq_kernel_client_ctl(client->seq_client,
|
||||
SNDRV_SEQ_IOCTL_GET_PORT_INFO,
|
||||
old);
|
||||
if (err < 0)
|
||||
return;
|
||||
continue;
|
||||
fill_port_info(new, client, &client->ump->groups[i]);
|
||||
if (old->capability == new->capability &&
|
||||
!strcmp(old->name, new->name))
|
||||
@ -271,7 +271,7 @@ static void update_port_infos(struct seq_ump_client *client)
|
||||
SNDRV_SEQ_IOCTL_SET_PORT_INFO,
|
||||
new);
|
||||
if (err < 0)
|
||||
return;
|
||||
continue;
|
||||
/* notify to system port */
|
||||
snd_seq_system_client_ev_port_change(client->seq_client, i);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user