| From 4f23aebe794661cf8e37beab6d9c210237ac800b Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 24 Jun 2021 20:49:36 +0200 |
| Subject: ALSA: firewire-lib: Fix 'amdtp_domain_start()' when no |
| AMDTP_OUT_STREAM stream is found |
| |
| From: Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
| |
| [ Upstream commit 0cbbeaf370221fc469c95945dd3c1198865c5fe4 ] |
| |
| The intent here is to return an error code if we don't find what we are |
| looking for in the 'list_for_each_entry()' loop. |
| |
| 's' is not NULL if the list is empty or if we scan the complete list. |
| Introduce a new 'found' variable to handle such cases. |
| |
| Fixes: 60dd49298ec5 ("ALSA: firewire-lib: handle several AMDTP streams in callback handler of IRQ target") |
| Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
| Acked-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> |
| Link: https://lore.kernel.org/r/9c9a53a4905984a570ba5672cbab84f2027dedc1.1624560484.git.christophe.jaillet@wanadoo.fr |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/firewire/amdtp-stream.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| diff --git a/sound/firewire/amdtp-stream.c b/sound/firewire/amdtp-stream.c |
| index 5805c5de39fb..7a282d8e7148 100644 |
| --- a/sound/firewire/amdtp-stream.c |
| +++ b/sound/firewire/amdtp-stream.c |
| @@ -1404,14 +1404,17 @@ int amdtp_domain_start(struct amdtp_domain *d, unsigned int ir_delay_cycle) |
| unsigned int queue_size; |
| struct amdtp_stream *s; |
| int cycle; |
| + bool found = false; |
| int err; |
| |
| // Select an IT context as IRQ target. |
| list_for_each_entry(s, &d->streams, list) { |
| - if (s->direction == AMDTP_OUT_STREAM) |
| + if (s->direction == AMDTP_OUT_STREAM) { |
| + found = true; |
| break; |
| + } |
| } |
| - if (!s) |
| + if (!found) |
| return -ENXIO; |
| d->irq_target = s; |
| |
| -- |
| 2.30.2 |
| |