]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ALSA: firewire-tascam: Do not drop unread control events
authorCássio Gabriel <cassiogabrielcontato@gmail.com>
Mon, 4 May 2026 00:55:52 +0000 (21:55 -0300)
committerTakashi Iwai <tiwai@suse.de>
Mon, 4 May 2026 15:47:06 +0000 (17:47 +0200)
commit0749daa8eb5ab90334aaad3b0671efd7150d43b1
tree6c31dbbaa06101736f7ffd8bfd811319993ca53c
parentf80785888f7c0980a49545b87a80e3817c9ed7c6
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: a8c0d13267a4 ("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
sound/firewire/tascam/tascam-hwdep.c