From nobody Sun Jun 14 07:35:29 2026 Received: from mail-dy1-f182.google.com (mail-dy1-f182.google.com [74.125.82.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D8E140F8DD for ; Fri, 1 May 2026 18:23:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777659788; cv=none; b=Yx/eLd82tT92xaF9DZ3Yme2h6ikrvfAFrNbZALucWK765bLFnrDLULG9GYy/2p/JKbrxlKQMViez7zyqsTETTEqX7O6zKHlmlzqxI0vp1Debf6VX9JUXCLRqfKB1+Mt2yc3YPWRTUMfdOK5KPFsHMI4QzJro+z447gmkqODq8CI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777659788; c=relaxed/simple; bh=SVi8OGcFQK9lZRrLuOntWSN6V+qhlhdqgyG2gVPyLdM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=Bx9Jy11jbn3nJx3UDK/ECHnZXBLCBzymkxOQboLmxQOV7ehynvvTwq43+qfll+YCVZnH5ICY6sWPZ9KbsRmwf6l6soqbhMxV70hUhuf28gnr7JkuFPRiGwVKPJ79J4nPjMcej0Eb+TA6LK/xZffX0E8lWPUDDPMydkj6q3SNeu0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=m65Mbash; arc=none smtp.client-ip=74.125.82.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="m65Mbash" Received: by mail-dy1-f182.google.com with SMTP id 5a478bee46e88-2d868d014a5so2298959eec.1 for ; Fri, 01 May 2026 11:23:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777659785; x=1778264585; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=GLMoGsBUlC+X0dGT0ghykkSOnQo8Jg5A53fEDIQtS04=; b=m65Mbash/ozRr3MOwpXi1yKZaB6rG77kw55N5XtScnqSQXXQiDAQo8tl2juwcQOAKr iiljU0Ta0hfBZ2b5A5AqfGinVQISkcDxNYltWTEPs0YYMvBxqJMlGsiVoHVWrsbMkcSA DCgailzWMPl4JFpYCNaNYXdy36oD5YKAhzDnLNywefha37GK5EET+/1iIoIOE5aT7pZg PSSwAsrZgpHHmrseSpYbH4BpA3nA1C+hvc46QzbyC64V0ZWytQOlxgWtpMjyFrNPtuN9 mCkP2dqhvqRhV+IHSnUU/QgGEVHRmBp0Fb6/3mWnjzsuOFreaU0awvX9BMIPLooKe24H aJEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777659785; x=1778264585; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GLMoGsBUlC+X0dGT0ghykkSOnQo8Jg5A53fEDIQtS04=; b=WqBSHRpxHYxFJp4q3s9St8kdpYJAVG9tTWkRNKXqZmgc8jL2Y4nbGzCK/UxovlRE6o r2jlHMGU1XZmBlha8G4gIiWw8SAwAlkElTt/yssQUaw7abg2VmcTsYntzSIxEomxxl2q bS5gb5MnLmMSt3X0g3J2nhdQBSCp3yw3E4HnWvyLU/fAYy696LAvUP6YiDa2L6NgkTl+ 43M40Qa1IZs14imDs4iOyYjVPyGhPcZdlzO/tpgaC3xncWPsmT/s6+QKMe10cI6CB7ki Bc28VCrZtWMUWPmZnPk6s9V8zlqZ1Y6A6sIB3SbD5nB/D94TBtNHPlLnaEqwOi3lopIg cfZA== X-Forwarded-Encrypted: i=1; AFNElJ8JNsxSEsbmGF77MKVTBWQH5P+mEce6K/HCujJCdTTBVhZVq/9aC/DyXy8JhhGlTI/rGDy7PGvpIRA62Ck=@vger.kernel.org X-Gm-Message-State: AOJu0YyhzcNfpvjDo/je7DiCzPOClW/Nl4ZZlKGziiYdQi8LyXKi4168 u4pP55TUgKso2jR9dJFHUizlXnqyrCZ3DQD/pkwXVtisheKMuXyP2/6t X-Gm-Gg: AeBDievZsVR+y9V7OvQpY58tca4YUmYESkIGk3NtlrtTUY/37D9nJQJnTxsdtxe4OXM 0zXAEdRksnQqbgPvLqVkNApmzQsA+wA+5DdTOUEsrH+iAvjSTV6GPI9oEyQ/8CImCUcHixDJHGM GhqDxSVGm6qFrz8xv3lX5o+rfrkMAQ2NYWnFFbDPssXNsBMDz+K3p4N6rD1DgYxOQRODXLrixWV 6xGNUO8pKfBkT9w2122lJ7TGsp1VoLkrDMvlu2K8fZ/wpHfmUkJ1r+4jCza/xwZbCiHp0hDa3ns BHASFCZUPuArJCU95yAtZ5P/sGMez2xlsO50I7wfNJ3693T3ek8KAWQyBx9VJit6YYo5HWVxYfY QQKf6Go0VZYtpkYmEvCd/j/EkCwS3zeqlhWGNrrUaFD5JETRN/jhMCnDC5JfXYDYL00T9UBeOLD BPEVi2lcJmSUqJ6+8/fzwfAPqlChWQGOC/CpbOlJ0dNvRPy4y/KNOddmCYJblTye1nQsnmjASln WemL4HBkx9r X-Received: by 2002:a05:7301:228f:b0:2dd:6937:79cb with SMTP id 5a478bee46e88-2efb82b272emr220762eec.12.1777659785240; Fri, 01 May 2026 11:23:05 -0700 (PDT) Received: from [192.168.1.18] (177-4-161-87.user3p.v-tal.net.br. [177.4.161.87]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee38e71cedsm6590624eec.9.2026.05.01.11.23.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 11:23:04 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Fri, 01 May 2026 15:22:58 -0300 Subject: [PATCH] ALSA: firewire-tascam: Do not drop unread control events Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260501-alsa-firewire-tascam-read-queue-v1-1-7baa4ba1a4de@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/yXNwQrCMBCE4Vcpe3YhKVjBVxEP22SiK1o129RC6 bs36mEO3+WfhQxZYXRsFsqY1PQ5VPhdQ+EqwwWssZpa13Zu7zzL3YSTZnzqeBQL8uAMifwuKOA DBMm7zknsqVZeGUnn38Pp/LeV/oYwfrO0rhsMvmkKgwAAAA== X-Change-ID: 20260501-alsa-firewire-tascam-read-queue-7eaef1060adb To: Clemens Ladisch , Takashi Sakamoto , Takashi Iwai , Jaroslav Kysela Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, =?utf-8?q?C=C3=A1ssio_Gabriel?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2281; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=SVi8OGcFQK9lZRrLuOntWSN6V+qhlhdqgyG2gVPyLdM=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDJlf3rdeq72b6CQ5wyFaaCOvq9I/jkS23GlMW0/eFVJdz jhp6YNXHaUsDGJcDLJiiiyrkxZZ7ul6cLU+boUHzBxWJpAhDFycAjCRc/kM/5T0lRl+B+kIsQcX SH3LUWPhU+nNP+Z6drGZ5/cnD8UlpzH8z4mZ2HHiPP+vCe6hj9xv6zdH/bugM40pflYFG8OOvXe C+QA= X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 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 tail_pos, marking the whole contiguous segment as consumed. Any events between the copied portion and tail_pos are lost. Advance pull_pos by the number of entries actually copied instead. 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 sta= te for userspace applications") Cc: stable@vger.kernel.org Signed-off-by: C=C3=A1ssio Gabriel --- sound/firewire/tascam/tascam-hwdep.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sound/firewire/tascam/tascam-hwdep.c b/sound/firewire/tascam/t= ascam-hwdep.c index 867b4ea1096e..dcd3fbcbeb79 100644 --- a/sound/firewire/tascam/tascam-hwdep.c +++ b/sound/firewire/tascam/tascam-hwdep.c @@ -59,6 +59,7 @@ static long tscm_hwdep_read_queue(struct snd_tscm *tscm, = char __user *buf, unsigned int head_pos; unsigned int tail_pos; unsigned int length; + unsigned int entries_copied; =20 if (tscm->pull_pos =3D=3D tscm->push_pos) break; @@ -73,6 +74,7 @@ static long tscm_hwdep_read_queue(struct snd_tscm *tscm, = char __user *buf, length =3D rounddown(remained, sizeof(*entries)); if (length =3D=3D 0) break; + entries_copied =3D length / sizeof(*entries); =20 spin_unlock_irq(&tscm->lock); if (copy_to_user(pos, &entries[head_pos], length)) @@ -80,7 +82,7 @@ static long tscm_hwdep_read_queue(struct snd_tscm *tscm, = char __user *buf, =20 spin_lock_irq(&tscm->lock); =20 - tscm->pull_pos =3D tail_pos % SND_TSCM_QUEUE_COUNT; + tscm->pull_pos =3D (head_pos + entries_copied) % SND_TSCM_QUEUE_COUNT; =20 count +=3D length; remained -=3D length; --- base-commit: 9e8d6ddd7ecf2ad42d614243f86e50fcf0183b9e change-id: 20260501-alsa-firewire-tascam-read-queue-7eaef1060adb Best regards, -- =20 C=C3=A1ssio Gabriel