From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f169.google.com (mail-dy1-f169.google.com [74.125.82.169]) (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 7AE5C3E47B for ; Mon, 4 May 2026 00:56:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777856161; cv=none; b=ItlXTG2fQBQVbcVAEr7UuCWZ3wjEyTxHmxlwjL6agooE0F80b88hyDHiQ03dfc3wG+lGbyku659LYon0QEAQi52Sw96RFqf2Ns1uLCAcdPzNleCeBV3h7vpaO5LRC4htX2n0DTrOW2PATCOx3Jw2EghTE056ccs3/3UsATIhsdU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777856161; c=relaxed/simple; bh=ND0ebtMtgG2oFEY74U8JFQQZ+pCiMd7ihtIY2d/33g0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=V8pOwAZVHln3mNFyIzddpCp9xt2WtYnfs7iT5rWz1joY0RU2X3Jn8zizaKFDlQis6IdEVWyFSqtbnW9nBOwlxzLH24f3bejay82mAXkh/TC4Pna2wbcPAoYl4QisYd0szg5G3xdSN9rBQkMiFs1W+/vSm7iQwamSNnA+BoWyNY8= 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=oNSQcqCK; arc=none smtp.client-ip=74.125.82.169 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="oNSQcqCK" Received: by mail-dy1-f169.google.com with SMTP id 5a478bee46e88-2c156c4a9efso6042472eec.1 for ; Sun, 03 May 2026 17:56:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777856159; x=1778460959; 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=WqgkeVGdbgXGvlU7ikkEcZEa18Qa/BkxqtfZd1WqbAA=; b=oNSQcqCKgzcgrEha8y332ajiMymmIU8IXujZae0wBFxCCV0V1BQzTEGXZid68XQ7UK K7ifmscc64qVlT07MGhr4jXPDuBTb2T2bmJakEadRt2PLuq80YBAzQI8hHqg/ovjYizs Joqs8Oz0vpAKa42+Ie6xoON5XwBKuMwdOjy5zB/h/rQy5aMK2hqX/IXMa2RihryajOnB yClGXO8jnl3maPw+EaJZYThIT8dNR61SNh1kXGmVYpHtzRbgvZynal64t6ITUySNFUY+ fUi791KtP4FKjVWzKxTRmtk8oB/pzEy3mL+Wr+5BeAKF5wkTb/84s4NZtzJ59seiYldh ZrXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777856159; x=1778460959; 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=WqgkeVGdbgXGvlU7ikkEcZEa18Qa/BkxqtfZd1WqbAA=; b=lDwDMyYCnvDnrbiv1DWgwMq1pDyDXsVrzQrcvxdQuWjKXm3Wjp1cw5MQEyJCuRoWTJ jF7p+Iu0M78TCh+ZgiBEcjP3y04SkQ7pOyFRy2zWjQuSikDFSMud7olXA+gxqWVCNgV+ GDAD4pdVeSeqxTnHwnXd3uXVjB0XsytyMDVoMdmGDdBOnML3J2xYJVV2W1uLeNs9kzg+ a4GlTWEcL+BIAVwK9ewhxusjfMjqjYaY9bvZB6WngeuKo0jrKOGLsFesGn3EiScaHCW0 eQg87vYd34BK2p8II8bWYnqV1lN3UFJll7m9TNQTdYtg9by70u/jbLhtHyniCqxdnFC4 2MoA== X-Forwarded-Encrypted: i=1; AFNElJ9TbrLjEOVA8WKHU+sDYtMX/D6YF6Fj5pk2xguvJPxqKumpzUTrIQGrikDbfhVmmickUQs1qTF1k9++ysE=@vger.kernel.org X-Gm-Message-State: AOJu0Ywwbhpca4CKAz8CJM1j/lYLoA2jgDJW8uvUpyjKKh60hw+3Bw5V raaUkXtKdAb/MHgM2x/2q7hv4P4iAvKGeLUs+p+ium/OlRycM/RQaIDz X-Gm-Gg: AeBDieun9DTKFzWvas76qoDR87neoeENAWMVUxtUGwVPcMJ0WGGlMiY4ugqVREXPvro 5LDQtfVKrm29Wos+1VpEsbba76y7n4Vg3v2mllYF19UD1dprllDsVsZY8oaK3TQ3hgzEGI/61WM kIhyb/4MCWQyGJTxEl3PQzC4cZvZesbebTPBhEPUPFcBadT4NiYHteGNwJCaGeM+3G6s9+poBsQ brwR2O+uADWp4BmVWnJ/C+bxFFxpsn2gqJ70BaUGq+6HrKRxmfngAdWROwDg89bScFi1r0E9m4O bT/Mh6q78CGD5EaUKrWGsM5wz/MnwL72ps5UOz4CB4bE7FXrRZu9BtIgCI1ldLNHHUKByD+fHaZ Oqa6hBl2fUOpnZlGDnshStjBCiZe+qUaSJgTa2Nh5rKp2CYq3KCswhbZJt6x6IA5Hmg7r0V+6nR tqcWl022x8SIXpkF6GpeHxX5Y4cND/MUNwJ0nMCb7RGP1ov8H38LNHgdKTe3IZV19b7jEE2QBva 6/DiGcQrO+H X-Received: by 2002:a05:7022:4c:b0:12a:6c4b:9cf0 with SMTP id a92af1059eb24-12dfd7d3817mr3789870c88.3.1777856159242; Sun, 03 May 2026 17:55:59 -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 a92af1059eb24-12df84252c0sm15864885c88.10.2026.05.03.17.55.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 17:55:58 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Sun, 03 May 2026 21:55:52 -0300 Subject: [PATCH v2] 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: 8bit Message-Id: <20260503-alsa-firewire-tascam-read-queue-v2-1-126c6efd7642@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/42OTQ6CMBCFr0K6dkxLEBJX3sOwmLYDjOFHOoAaw t0teAEXb/ElL997qxIKTKKuyaoCLSw89BHSU6Jcg31NwD6ySnWa64s2gK0gVBzoFQMTisMOAqG HcaaZoCCkyuhco7cqWp6BKn4fC/fyxzLbB7lp1+6NhmUawue4sJi99//aYsBAYREziwYzT7e6Q 27PbuhUuW3bF/RSJHLgAAAA X-Change-ID: 20260501-alsa-firewire-tascam-read-queue-7eaef1060adb To: Takashi Sakamoto , Clemens Ladisch , 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=2064; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=ND0ebtMtgG2oFEY74U8JFQQZ+pCiMd7ihtIY2d/33g0=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDJnf381hvCgkvttW5P7x8pn3N9Yp6sj2ix5csbL09jrHz dWPOsI2dJSyMIhxMciKKbKsTlpkuafrwdX6uBUeMHNYmUCGMHBxCsBEzlgw/PdR1JzJ/vPhxCz/ k3cm7jdhDdzhmFswvYhty84ZNx/YXXZmZDgqJrv8qPDeGWsvxOj+sq+J/rbXa+N2zpsnOr655m/ f7csHAA== 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 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 Signed-off-by: Cássio Gabriel --- Changes in v2: - Recompute tail_pos after shortening length instead of adding a separate entries_copied variable, as suggested. - Add Suggested-by tag. - Link to v1: https://patch.msgid.link/20260501-alsa-firewire-tascam-read-queue-v1-1-7baa4ba1a4de@gmail.com --- sound/firewire/tascam/tascam-hwdep.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sound/firewire/tascam/tascam-hwdep.c b/sound/firewire/tascam/tascam-hwdep.c index 867b4ea1096e..6270263e7bf4 100644 --- a/sound/firewire/tascam/tascam-hwdep.c +++ b/sound/firewire/tascam/tascam-hwdep.c @@ -73,6 +73,7 @@ static long tscm_hwdep_read_queue(struct snd_tscm *tscm, char __user *buf, length = rounddown(remained, sizeof(*entries)); if (length == 0) break; + tail_pos = head_pos + length / sizeof(*entries); spin_unlock_irq(&tscm->lock); if (copy_to_user(pos, &entries[head_pos], length)) --- base-commit: 9e8d6ddd7ecf2ad42d614243f86e50fcf0183b9e change-id: 20260501-alsa-firewire-tascam-read-queue-7eaef1060adb Best regards, -- Cássio Gabriel