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)
committerTakashi Iwai <tiwai@suse.de>
Mon, 19 Feb 2024 08:25:52 +0000 (09:25 +0100)
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>
sound/firewire/amdtp-stream.c

index a13c0b408aadfcc6d2f1f588cdd96a733961bf2a..7be17bca257f0ddba4799875c9250f96ba4e4b8a 100644 (file)
@@ -951,7 +951,7 @@ static int generate_tx_packet_descs(struct amdtp_stream *s, struct pkt_desc *des
                                // 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",