]> git.hungrycats.org Git - linux/commitdiff
ALSA: firewire-lib: fix to check cycle continuity
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 18 Feb 2024 03:30:26 +0000 (12:30 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 Mar 2024 14:38:48 +0000 (14:38 +0000)
commit 77ce96543b03f437c6b45f286d8110db2b6622a3 upstream.

The local helper function to compare the given pair of cycle count
evaluates them. If the left value is less than the right value, the
function returns negative value.

If the safe cycle is less than the current cycle, it is the case of
cycle lost. However, it is not currently handled properly.

This commit fixes the bug.

Cc: <stable@vger.kernel.org>
Fixes: 705794c53b00 ("ALSA: firewire-lib: check cycle continuity")
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20240218033026.72577-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/firewire/amdtp-stream.c

index 9be2260e4ca2d26b41c9784b686ae6080a0e6954..f8b644cb9157ac7fc74f8d2b125fbe5f2e4277b1 100644 (file)
@@ -934,7 +934,7 @@ static int generate_device_pkt_descs(struct amdtp_stream *s,
                                // to the reason.
                                unsigned int safe_cycle = increment_ohci_cycle_count(next_cycle,
                                                                IR_JUMBO_PAYLOAD_MAX_SKIP_CYCLES);
-                               lost = (compare_ohci_cycle_count(safe_cycle, cycle) > 0);
+                               lost = (compare_ohci_cycle_count(safe_cycle, cycle) < 0);
                        }
                        if (lost) {
                                dev_err(&s->unit->device, "Detect discontinuity of cycle: %d %d\n",