diff options
Diffstat (limited to 'sound/core/seq/seq_clientmgr.c')
-rw-r--r-- | sound/core/seq/seq_clientmgr.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/core/seq/seq_clientmgr.c b/sound/core/seq/seq_clientmgr.c index ea2d0ae85bd3..6c9cba2166d9 100644 --- a/sound/core/seq/seq_clientmgr.c +++ b/sound/core/seq/seq_clientmgr.c | |||
@@ -1259,6 +1259,7 @@ static int snd_seq_ioctl_create_port(struct snd_seq_client *client, void *arg) | |||
1259 | struct snd_seq_port_info *info = arg; | 1259 | struct snd_seq_port_info *info = arg; |
1260 | struct snd_seq_client_port *port; | 1260 | struct snd_seq_client_port *port; |
1261 | struct snd_seq_port_callback *callback; | 1261 | struct snd_seq_port_callback *callback; |
1262 | int port_idx; | ||
1262 | 1263 | ||
1263 | /* it is not allowed to create the port for an another client */ | 1264 | /* it is not allowed to create the port for an another client */ |
1264 | if (info->addr.client != client->number) | 1265 | if (info->addr.client != client->number) |
@@ -1269,7 +1270,9 @@ static int snd_seq_ioctl_create_port(struct snd_seq_client *client, void *arg) | |||
1269 | return -ENOMEM; | 1270 | return -ENOMEM; |
1270 | 1271 | ||
1271 | if (client->type == USER_CLIENT && info->kernel) { | 1272 | if (client->type == USER_CLIENT && info->kernel) { |
1272 | snd_seq_delete_port(client, port->addr.port); | 1273 | port_idx = port->addr.port; |
1274 | snd_seq_port_unlock(port); | ||
1275 | snd_seq_delete_port(client, port_idx); | ||
1273 | return -EINVAL; | 1276 | return -EINVAL; |
1274 | } | 1277 | } |
1275 | if (client->type == KERNEL_CLIENT) { | 1278 | if (client->type == KERNEL_CLIENT) { |
@@ -1290,6 +1293,7 @@ static int snd_seq_ioctl_create_port(struct snd_seq_client *client, void *arg) | |||
1290 | 1293 | ||
1291 | snd_seq_set_port_info(port, info); | 1294 | snd_seq_set_port_info(port, info); |
1292 | snd_seq_system_client_ev_port_start(port->addr.client, port->addr.port); | 1295 | snd_seq_system_client_ev_port_start(port->addr.client, port->addr.port); |
1296 | snd_seq_port_unlock(port); | ||
1293 | 1297 | ||
1294 | return 0; | 1298 | return 0; |
1295 | } | 1299 | } |