From nobody Mon Jun 15 23:15:42 2026 Received: from mail-dl1-f50.google.com (mail-dl1-f50.google.com [74.125.82.50]) (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 DB6743EC2EB for ; Tue, 14 Apr 2026 16:48:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776185285; cv=none; b=fxd6MyUHp4Y9A9q8bneGQInx+G/F3RiqfzeIbp7AXLPM/j7RD7BjKfx1GHuqobYuKhC/XtUcD3DRYuWfnehPd7VVqNStooj0Vt+Tn1wCYZxFqf21qaVIYGAkIE6hdRmcwm+JQRNod1xhR4IQiwfxZgjv3vrqtyzwvbSO3LFWRDI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776185285; c=relaxed/simple; bh=BR6lNaL0dpczfNY0DDA2VV9Rl7s6QrNzwi5PGT0ma9A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r0pkhZ9/BdL4pPw/wm0F/7OKLA+Iatz9g//1gKbaW2XZNXAJQuPoHCUMaXwcvlekDa4A1DEntsb+X4XYauFeJ4XTwzrfaBWISjH60j0yWWP1asPT9uKBJ0uisJ6z3OrBqdqAI1PhhQ40FI31bB6VvCYNW5FXOfmbIJqxQEUOM8s= 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=YbR9CDDz; arc=none smtp.client-ip=74.125.82.50 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="YbR9CDDz" Received: by mail-dl1-f50.google.com with SMTP id a92af1059eb24-1279eced0b9so8241652c88.0 for ; Tue, 14 Apr 2026 09:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776185282; x=1776790082; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=SGxPjE4cek659ARboO+TnX9v39S7D8OJzTJI+xZg2Gg=; b=YbR9CDDzLW0gDhSmOoO035qB1OPL0S1BK2JlyRggtsrw3xxosyGfOtcDPCkOH9R8OZ nIn1IhRkWLuoCNOdhQLIBF7aVAhjGbgTSvdPTbEZllDpo35ayeoLf/AvDnXMxTbmRwO+ ds/IqG21vtMuNAu4y34e35qzAsDUC8gr/Yr/wQUNrGoKUQGESKBvBeyDPFzDtJqVdmM2 /XQHhg53BMWhap5skwIBqmig+stP/23oefrIQ7OsqInKKu51mxC0ZZmdKU1fe/LTScdN if7F2H3zmR0EEKC7S/gX/POiDG4b5qoNkAuEwFxQBh1O1rqz1kTyeT5c3v4StyVqZM5s Ew6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776185282; x=1776790082; h=cc:to:in-reply-to:references: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=SGxPjE4cek659ARboO+TnX9v39S7D8OJzTJI+xZg2Gg=; b=d8sLpospPpygdGzYmPOngkZR7eKozP2cYVDBwjz3kW8oAQLkc8L67aB53xHxp30BJr 5i1t+kFx6Ye09B3NSVEV+Cf11HHTRwkQ8Hi3jZ7vJAaSfsN2rPdmK4WCl6DrIpBdxcyG 6ESatLwIcgUV8XDhqF/PmL8WpSPtnd4Zf2Ol1piisc/glhHg19n7mFHGSZWGs5ysVZlX dI5Z43n+YKaGhQEP+lvOb1bujB2VZiFs6EsmNOgQy8h0BLXwa1EdeMrHYqe4SKMG7/LC 1/J69CW4+/NPitjYdBCxFBW/O9a/eoWWuLTk71+Koz+CMeCg50iBFGH4ollCyw8ir2n6 8s1g== X-Forwarded-Encrypted: i=1; AFNElJ8a8cr6i8mNKw8bcXaNbtG0sPW+8GzwiO3QwL4C3mDpGlx/psPebOmterZhLJL0OjiaQ1DmfGDJ4xmS2O4=@vger.kernel.org X-Gm-Message-State: AOJu0YwclHhFuvS/jbSf3YMgHORIVa2yqc/GdUXxxsw8vmWfFi9ndBCe YCzGdMloVleiRISU7OhBV3dEEQW35hz3jq/iqVne+SMbsCMa9FHwv6Ty X-Gm-Gg: AeBDieubltNO0ldW4JHwFwVKrAZ7YiHjk1OvzcRYeDoNVBLgJWs8xedbm+49eqfO3zQ 0nj6/f2TBnKOA8Qjr4HXFng88dRvcnAtgFUjz8m2Px7+KZAd5YVdadWHVL4DsSQrCNPBf0iUZ53 YvF1MVYxrv8fYOMD2Tcq3Hne1+Bas3KAJgnZRCnTK1/DO4hgW0g+MEQXBVjhgJheYpwxmjix+vS CA3QRkDoDSh2GhbPDEGjlRP6f3CxcwA6u/8jRQ21LYubaUdw9Kmx0CMeWC8UsH6lwKr9GeEOuHg 0DQUjqAyZacb8u+6dZ06HKGElf+cp9pompLDr5cfD4p5sRZHiPFyKBYzyEEiEIeb+gdhNyNoyU3 j9wrIWDhE+yOgwHJtliauATgJ3pNVYMAE/5xNwv3V+cRYVm12QM0uNrYRIBIpMEZ2TB9eKK1UUI D7jn3Lw7rOmbLHkEsjYBxKtEi6gqySUS267xz3Iv1fOlZS/1xOjrXVi6oJg71XtvKOevkqUNv2L 95E X-Received: by 2002:a05:7300:d70b:b0:2da:9a3c:8062 with SMTP id 5a478bee46e88-2da9a3c91a3mr4007238eec.17.1776185281993; Tue, 14 Apr 2026 09:48:01 -0700 (PDT) Received: from [192.168.1.18] (177-4-160-195.user3p.v-tal.net.br. [177.4.160.195]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2de130e056dsm558584eec.30.2026.04.14.09.47.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 09:48:01 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Tue, 14 Apr 2026 13:47:53 -0300 Subject: [PATCH 1/2] ALSA: compress: Use EOPNOTSUPP for missing pointer callbacks 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: <20260414-alsa-compress-pointer-avail-errors-v1-1-f5a1a8b1dfba@gmail.com> References: <20260414-alsa-compress-pointer-avail-errors-v1-0-f5a1a8b1dfba@gmail.com> In-Reply-To: <20260414-alsa-compress-pointer-avail-errors-v1-0-f5a1a8b1dfba@gmail.com> To: Takashi Iwai , Vinod Koul , Mark Brown , Jaroslav Kysela Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?C=C3=A1ssio_Gabriel?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=966; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=BR6lNaL0dpczfNY0DDA2VV9Rl7s6QrNzwi5PGT0ma9A=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDJn38vd0HeLaZWJgXvOVM91ZTX/SyvMNreHWIZs8duW/T N0c5zqvo5SFQYyLQVZMkWV10iLLPV0PrtbHrfCAmcPKBDKEgYtTACZyy5Thn8mF6a95/8+vPbff h1Nu9Ux5zhyf5glL/zzKuSr0Ja6j8wUjw4Jug06BcttNL33kWE7kdrx7uXm16Ka6AHvtKvNHN8u X8gMA X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 snd_compr_update_tstamp() returns a sentinel error when a compress driver does not implement the pointer() callback. Use -EOPNOTSUPP for that case instead of -ENOTSUPP. This keeps the behavior the same while switching to the standard unsupported-operation errno and avoids the checkpatch warning about ENOTSUPP not being a SUSv4 error code. Signed-off-by: C=C3=A1ssio Gabriel --- sound/core/compress_offload.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c index fd63d219bf86..e3239c739d34 100644 --- a/sound/core/compress_offload.c +++ b/sound/core/compress_offload.c @@ -186,7 +186,7 @@ static int snd_compr_update_tstamp(struct snd_compr_str= eam *stream, int ret; =20 if (!stream->ops->pointer) - return -ENOTSUPP; + return -EOPNOTSUPP; =20 switch (stream->runtime->state) { case SNDRV_PCM_STATE_OPEN: --=20 2.53.0 From nobody Mon Jun 15 23:15:42 2026 Received: from mail-dy1-f171.google.com (mail-dy1-f171.google.com [74.125.82.171]) (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 EF5E53ECBC4 for ; Tue, 14 Apr 2026 16:48:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776185287; cv=none; b=YK50993YD7sITe3uwUvXRkLAPHjQJnDd/fahByHb93UP9O1VHLDjkzEFXO2Le8RmfgAB9WdiYKUObIH2ZJQOnhB8w0LQIiAeGYCK/Nk3jVLhC8ANkjBuS0oSHN2sdFsg7k8tn5Fywpcnir4d31i7N6QNigf59YsytR9yPBLm7lw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776185287; c=relaxed/simple; bh=uCY/nj9CD/1M1siCKk8xhE+z0p9kwT0Bf4ZGHP2fews=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D4FwwYs3Hd35MWSdCJB/9tPNQDOwZ5bJHqbhSkyQ51c0HsAGkrrsiq8wfuYM6zHXE875JkI0KjfkUF1MHFedMa4Aoo6LhW8JjvS5pXPla9AuCq3ffmxIdFxnymu4fzO8GurudedVABlWWEoyXxJ4PRkfRg94eloFd0kJ1mvpuXc= 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=gDQyPTFj; arc=none smtp.client-ip=74.125.82.171 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="gDQyPTFj" Received: by mail-dy1-f171.google.com with SMTP id 5a478bee46e88-2c15849aa2cso6693750eec.0 for ; Tue, 14 Apr 2026 09:48:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776185285; x=1776790085; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=5QqwWZmoSxDFlOxH8SMWYFfGSd27ukOlZrAEvYnzROs=; b=gDQyPTFjYy3SPm8V+9EzNfnJy1i8NxwSWEAEjrvc0YluA5SOA3BWZx6Caaw/R+UvCK Qn+o+KKo7/sENpc/hu3ZIXNcZQ6ExFoRSBNz00lau2Hy3aQGr0ewCsYja3lYJCvnTYvJ 9HANFdkBMcFvGhf9ywArriwb+NyMY9jNy+P1SKOU5kc19cOqRozDeB2c1FTnfs9bTBXU JlaZs32ZmDMxhdcsJu233iKMKuw/1NUCtFOcHZkfVxps1FDWlg70BbL0z8StT4v0d7PN gv1kPvZsxyiIvBef+vjZMFhNuQ59Zec9uonxrDWhjmmXUeQGninNs1pDJ3CLVsyNkKgN kfoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776185285; x=1776790085; h=cc:to:in-reply-to:references: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=5QqwWZmoSxDFlOxH8SMWYFfGSd27ukOlZrAEvYnzROs=; b=fBkerVmT7QK7CBi6MNErNbGF4LAG5Q332ojURorXlwwxW8rCiis+ymsjAqRX9Zz4J4 orHsKGj9Zs7KIly2XzQmGT1gC3mALzG8Of7rsX/ekrDc6EeotUYLFjxgB5kYkDP1nsv5 bMcXUb5HxsI4cDN4cJpgh8NLRpb5nGsRiRzWgZuXA90kgMXQ6zwpNr7fXB38w9qLbIpE PORvgJRAxTiKgZi7XhDC4AeMEN5fAM4YDtDa+rQI2jmW8zBhNgrWmZP2LOvJWmpTu5LA 93u0W8YN41G2LMQq81K5or4Yg0NzlNjNr61pelHoHTLOxTbhl/kEDFb+R8NlwJsqNywE Vbww== X-Forwarded-Encrypted: i=1; AFNElJ/IJH6msRGVos/NieLB5IPxongQJV6p23572A7d9/Au6uzEmHdLgx+zO34GDFOt+xgb5Sn3Haes+v5HJ3A=@vger.kernel.org X-Gm-Message-State: AOJu0YxIwBUiqhpifwPW9H87+8uarqDTivSpuq9LwMq+yBTuiDt6ZwSU skE8pdFSKGjd3xfkVDkuMs0meIWyR14wNtEJG2e4DYQ72Mhb9PsEmA8g X-Gm-Gg: AeBDiesp8l8w+QIBIEnPOG7rS4sCIaJnj+4DXyTeZz3Gik3rE7+DraHbkNTgPeGmvLQ Gi3+Yc65bBzjaWfGQGoq296tEnPJXH20ChdTleG2CKTJw/tvXWZhL5hcL4oB70wreWu8XzEUCtJ F1ndhJI5jWsHWCWDNgxSaEq/IWgu6BGR16GdGM2NKRxCmJ4PxwkgHAZvsoP5TAmIl494arb+YH8 4ZzEcYFrrJuX0sLPaEZ5InpwpcuSGbyY6NMNDhfjP1+30XZL14d0sAkA495Htb81V3AVGldHCqF G872thPvTEkg/AsP+qQa9Gl7CGVvi4GyEcbSApXS6X9qXc906carOYi/qW7s5o4b/Su3ArhtadX Jd7PxeqDeIaidTmClja72mrEwV0txuu7RY92IlNxDTFXB2xDxiiM2RxbABOH9kIDcSDq7mzx9bU 3T2GK1wq8340zVcz44+XYshMexFDB0inbP1UvUfy+AfqnZcrNRTp72Bn7RJOgKOAcaaRnwtITk9 PBb X-Received: by 2002:a05:7300:80c2:b0:2c0:d46d:cfc2 with SMTP id 5a478bee46e88-2d5887a2fe5mr10237011eec.23.1776185284959; Tue, 14 Apr 2026 09:48:04 -0700 (PDT) Received: from [192.168.1.18] (177-4-160-195.user3p.v-tal.net.br. [177.4.160.195]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2de130e056dsm558584eec.30.2026.04.14.09.48.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 09:48:04 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Tue, 14 Apr 2026 13:47:54 -0300 Subject: [PATCH 2/2] ALSA: compress: Propagate real pointer errors in avail paths 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: <20260414-alsa-compress-pointer-avail-errors-v1-2-f5a1a8b1dfba@gmail.com> References: <20260414-alsa-compress-pointer-avail-errors-v1-0-f5a1a8b1dfba@gmail.com> In-Reply-To: <20260414-alsa-compress-pointer-avail-errors-v1-0-f5a1a8b1dfba@gmail.com> To: Takashi Iwai , Vinod Koul , Mark Brown , Jaroslav Kysela Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?C=C3=A1ssio_Gabriel?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=5707; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=uCY/nj9CD/1M1siCKk8xhE+z0p9kwT0Bf4ZGHP2fews=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDJn38vcw7bwn8bLE0uJTsvAS9cf7f14zT3A5WhAWL9rbF T1nS2dvRykLgxgXg6yYIsvqpEWWe7oeXK2PW+EBM4eVCWQIAxenAExE2puR4XeF3aF9P/b+628v PPr65+vJjJ686SYMfCz73rGWLwnt3crwh+dKc2Su4eOve/4qXtyof5Zvq050xeXL/1MmSUxmvBg cyQ0A X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 Commit 61327f3d817c ("ALSA: compress: Pay attention if drivers error out retrieving pointers") made snd_compr_update_tstamp() return driver pointer() failures, but snd_compr_calc_avail() still ignores that status and continues with stale runtime counters. The fallback for an unsupported pointer callback remains intentional, so keep ignoring -EOPNOTSUPP there. Propagate real pointer-refresh failures instead. This makes SNDRV_COMPRESS_AVAIL, read() and write() fail immediately on real pointer errors, and makes poll() report EPOLLERR instead of continuing with stale availability data. snd_compr_tstamp() already propagates the same errors, so this also restores consistency between the timestamp and avail paths. Fixes: 61327f3d817c ("ALSA: compress: Pay attention if drivers error out re= trieving pointers") Signed-off-by: C=C3=A1ssio Gabriel --- sound/core/compress_offload.c | 53 ++++++++++++++++++++++++++++++---------= ---- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c index e3239c739d34..5a125329d5b7 100644 --- a/sound/core/compress_offload.c +++ b/sound/core/compress_offload.c @@ -207,18 +207,23 @@ static int snd_compr_update_tstamp(struct snd_compr_s= tream *stream, return 0; } =20 -static size_t snd_compr_calc_avail(struct snd_compr_stream *stream, - struct snd_compr_avail64 *avail) +static int snd_compr_calc_avail(struct snd_compr_stream *stream, + struct snd_compr_avail64 *avail) { + int ret; + memset(avail, 0, sizeof(*avail)); - snd_compr_update_tstamp(stream, &avail->tstamp); - /* Still need to return avail even if tstamp can't be filled in */ + ret =3D snd_compr_update_tstamp(stream, &avail->tstamp); + if (ret < 0 && ret !=3D -EOPNOTSUPP) + return ret; + /* Still need to return avail when no timestamp is available */ =20 if (stream->runtime->total_bytes_available =3D=3D 0 && stream->runtime->state =3D=3D SNDRV_PCM_STATE_SETUP && stream->direction =3D=3D SND_COMPRESS_PLAYBACK) { pr_debug("detected init and someone forgot to do a write\n"); - return stream->runtime->buffer_size; + avail->avail =3D stream->runtime->buffer_size; + return 0; } pr_debug("app wrote %llu, DSP consumed %llu\n", stream->runtime->total_bytes_available, @@ -227,11 +232,12 @@ static size_t snd_compr_calc_avail(struct snd_compr_s= tream *stream, stream->runtime->total_bytes_transferred) { if (stream->direction =3D=3D SND_COMPRESS_PLAYBACK) { pr_debug("both pointers are same, returning full avail\n"); - return stream->runtime->buffer_size; + avail->avail =3D stream->runtime->buffer_size; } else { pr_debug("both pointers are same, returning no avail\n"); - return 0; + avail->avail =3D 0; } + return 0; } =20 avail->avail =3D stream->runtime->total_bytes_available - @@ -240,14 +246,21 @@ static size_t snd_compr_calc_avail(struct snd_compr_s= tream *stream, avail->avail =3D stream->runtime->buffer_size - avail->avail; =20 pr_debug("ret avail as %zu\n", (size_t)avail->avail); - return avail->avail; + return 0; } =20 -static inline size_t snd_compr_get_avail(struct snd_compr_stream *stream) +static inline int snd_compr_get_avail(struct snd_compr_stream *stream, + size_t *avail_ret) { struct snd_compr_avail64 avail; + int ret; =20 - return snd_compr_calc_avail(stream, &avail); + ret =3D snd_compr_calc_avail(stream, &avail); + if (ret < 0) + return ret; + + *avail_ret =3D avail.avail; + return 0; } =20 static void snd_compr_avail32_from_64(struct snd_compr_avail *avail32, @@ -262,15 +275,16 @@ static int snd_compr_ioctl_avail(struct snd_compr_str= eam *stream, { struct snd_compr_avail64 ioctl_avail64; struct snd_compr_avail ioctl_avail32; - size_t avail; const void *copy_from =3D &ioctl_avail64; size_t copy_size =3D sizeof(ioctl_avail64); + int ret; =20 if (stream->direction =3D=3D SND_COMPRESS_ACCEL) return -EBADFD; =20 - avail =3D snd_compr_calc_avail(stream, &ioctl_avail64); - ioctl_avail64.avail =3D avail; + ret =3D snd_compr_calc_avail(stream, &ioctl_avail64); + if (ret < 0) + return ret; if (is_32bit) { snd_compr_avail32_from_64(&ioctl_avail32, &ioctl_avail64); copy_from =3D &ioctl_avail32; @@ -346,7 +360,9 @@ static ssize_t snd_compr_write(struct file *f, const ch= ar __user *buf, return -EBADFD; } =20 - avail =3D snd_compr_get_avail(stream); + retval =3D snd_compr_get_avail(stream, &avail); + if (retval < 0) + return retval; pr_debug("avail returned %lu\n", (unsigned long)avail); /* calculate how much we can write to buffer */ if (avail > count) @@ -402,7 +418,9 @@ static ssize_t snd_compr_read(struct file *f, char __us= er *buf, return -EPIPE; } =20 - avail =3D snd_compr_get_avail(stream); + retval =3D snd_compr_get_avail(stream, &avail); + if (retval < 0) + return retval; pr_debug("avail returned %lu\n", (unsigned long)avail); /* calculate how much we can read from buffer */ if (avail > count) @@ -437,6 +455,7 @@ static __poll_t snd_compr_poll(struct file *f, poll_tab= le *wait) struct snd_compr_stream *stream; struct snd_compr_runtime *runtime; size_t avail; + int ret; __poll_t retval =3D 0; =20 if (snd_BUG_ON(!data)) @@ -471,7 +490,9 @@ static __poll_t snd_compr_poll(struct file *f, poll_tab= le *wait) } #endif =20 - avail =3D snd_compr_get_avail(stream); + ret =3D snd_compr_get_avail(stream, &avail); + if (ret < 0) + return snd_compr_get_poll(stream) | EPOLLERR; pr_debug("avail is %lu\n", (unsigned long)avail); /* check if we have at least one fragment to fill */ switch (runtime->state) { --=20 2.53.0