linux/sound/firewire
Cássio Gabriel 0749daa8eb ALSA: firewire-tascam: Do not drop unread control events
tscm_hwdep_read_queue() copies as many queued control events as fit in
the userspace buffer. When the buffer is smaller than the current
contiguous queue segment, length is rounded down to the number of bytes
that can be copied.

However, after copying that shortened length, the code advances pull_pos
to the original tail_pos, marking the whole contiguous segment as
consumed. Any events between the copied portion and tail_pos are lost.

Limit tail_pos to the position after the entries actually copied before
updating pull_pos. When the whole segment fits, this is equivalent to the
old tail_pos update; when the buffer is smaller, the remaining events
stay queued for the next read.

Fixes: a8c0d13267 ("ALSA: firewire-tascam: notify events of change of state for userspace applications")
Cc: stable@vger.kernel.org
Suggested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Co-developed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20260503-alsa-firewire-tascam-read-queue-v2-1-126c6efd7642@gmail.com
2026-05-04 17:47:06 +02:00
..
bebob Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
dice ALSA: firewire: dice: Fix printf warning with W=1 2026-02-28 09:31:13 +01:00
digi00x ALSA: firewire: digi00x: Use guard() for spin locks 2025-08-30 10:02:21 +02:00
fireface ALSA: firewire: fireface: Use guard() for spin locks 2025-08-30 10:02:21 +02:00
fireworks ALSA: fireworks: bound device-supplied status before string array lookup 2026-04-10 14:59:47 +02:00
motu Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
oxfw ALSA: firewire: oxfw: Use guard() for spin locks 2025-08-30 10:02:27 +02:00
tascam ALSA: firewire-tascam: Do not drop unread control events 2026-05-04 17:47:06 +02:00
amdtp-am824.c ALSA: firewire-lib: obsolete return value from context payload processing layer 2023-01-12 12:14:50 +01:00
amdtp-am824.h ALSA: firewire-lib/motu: use int type for the value of bitwise OR with enumerator-constant 2021-05-18 12:21:52 +02:00
amdtp-stream-trace.h ALSA: firewire-lib: extend tracepoints event including CYCLE_TIME of 1394 OHCI 2023-01-10 09:34:47 +01:00
amdtp-stream.c ALSA: firewire-lib: fix uninitialized local variable 2026-03-17 09:54:48 +01:00
amdtp-stream.h ALSA: firewire: amdtp-stream: fix enum kernel-doc warnings 2025-10-14 15:12:52 +02:00
cmp.c ALSA: firewire: lib: Use guard() for mutex locks 2025-08-30 10:02:21 +02:00
cmp.h ALSA: firewire: Remove unused cmp_connection_update 2024-10-10 14:22:01 +02:00
fcp.c ALSA: firewire: lib: Use guard() for spin locks 2025-08-30 10:02:27 +02:00
fcp.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
isight.c ALSA: firewire: isight: Use guard() for mutex locks 2025-08-30 10:02:21 +02:00
iso-resources.c ALSA: firewire: lib: Use guard() for spin locks 2025-08-30 10:02:27 +02:00
iso-resources.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig ALSA: firewire-motu: add support for MOTU 896 mk3 FireWire and Hybrid 2024-01-29 09:04:30 +01:00
lib.c ALSA: firewire: use 'GPL' string for module license contributed by Clemens Ladisch 2023-06-12 14:39:00 +02:00
lib.h ALSA: firewire-lib: delete unused kernel API 2021-06-07 17:14:54 +02:00
Makefile ALSA: firewire: Use *-y instead of *-objs in Makefile 2024-05-08 18:18:03 +02:00
packets-buffer.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
packets-buffer.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00