diff options
| author | Boris Brezillon <boris.brezillon@free-electrons.com> | 2017-08-28 18:04:15 +0200 |
|---|---|---|
| committer | Boris Brezillon <boris.brezillon@free-electrons.com> | 2017-08-28 18:04:15 +0200 |
| commit | 5ffa70b2a38befadb920b85fe87f5da2b4cff623 (patch) | |
| tree | 411b1d357731db5e2611f0ca67082a8c909b7d9d /sound/core/seq/seq_queue.c | |
| parent | 75864b301c91bf41ec2fb49ce4efb62fcb48b954 (diff) | |
| parent | cc4a41fe5541a73019a864883297bd5043aa6d98 (diff) | |
| download | lwn-5ffa70b2a38befadb920b85fe87f5da2b4cff623.tar.gz lwn-5ffa70b2a38befadb920b85fe87f5da2b4cff623.zip | |
Merge tag 'v4.13-rc7' into mtd/next
Merge v4.13-rc7 back to resolve merge conflicts in
drivers/mtd/nand/nandsim.c and include/asm-generic/vmlinux.lds.h.
Diffstat (limited to 'sound/core/seq/seq_queue.c')
| -rw-r--r-- | sound/core/seq/seq_queue.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sound/core/seq/seq_queue.c b/sound/core/seq/seq_queue.c index 450c5187eecb..79e0c5604ef8 100644 --- a/sound/core/seq/seq_queue.c +++ b/sound/core/seq/seq_queue.c @@ -184,22 +184,26 @@ void __exit snd_seq_queues_delete(void) static void queue_use(struct snd_seq_queue *queue, int client, int use); /* allocate a new queue - - * return queue index value or negative value for error + * return pointer to new queue or ERR_PTR(-errno) for error + * The new queue's use_lock is set to 1. It is the caller's responsibility to + * call snd_use_lock_free(&q->use_lock). */ -int snd_seq_queue_alloc(int client, int locked, unsigned int info_flags) +struct snd_seq_queue *snd_seq_queue_alloc(int client, int locked, unsigned int info_flags) { struct snd_seq_queue *q; q = queue_new(client, locked); if (q == NULL) - return -ENOMEM; + return ERR_PTR(-ENOMEM); q->info_flags = info_flags; queue_use(q, client, 1); + snd_use_lock_use(&q->use_lock); if (queue_list_add(q) < 0) { + snd_use_lock_free(&q->use_lock); queue_delete(q); - return -ENOMEM; + return ERR_PTR(-ENOMEM); } - return q->queue; + return q; } /* delete a queue - queue must be owned by the client */ |
