From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f177.google.com (mail-dy1-f177.google.com [74.125.82.177]) (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 51AF02EA749 for ; Sun, 19 Apr 2026 20:31:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.177 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776630692; cv=none; b=I6SygNWXoxDYPH4uRs3EyuvqdRxTOACkS39EeZq/YvQoCaSAuFjoySnTPSd30Njtu3KC0Yk0/CO7rOlxoKoA6Po4/wSLQmajsCbfU9Au8/SfZyj9QnaNdBGrhBoDh3Z97o7KLtQs6FN0YoXIW3Z7P5xvmIlSSAwcufx+utVojtw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776630692; c=relaxed/simple; bh=P4weKcVi00t8c3FrT0ZGr8asxcuixapoIDKdFDWxtqM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S3y5Kp80N/kaUITi/+ktVoPi/p5fKy00g+CWzinUhC5ZaiAmuiMr7lWKxUX2Jzs2eaQIOR6l0NAXTBnGLOekI814vL7b5Ybq5N02elrTfoFxZxDbyonCnQryiwy7BZYk27Ac63izGwLYMkbkdxPsDIQfq50oihniq4xE/Pt9eyw= 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=lXtdTN1+; arc=none smtp.client-ip=74.125.82.177 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="lXtdTN1+" Received: by mail-dy1-f177.google.com with SMTP id 5a478bee46e88-2e221a71e19so2010747eec.0 for ; Sun, 19 Apr 2026 13:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776630688; x=1777235488; 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=Tn6tLwXqEiX4RdZMDh5f+mmnzYxq73K+CVdhjiXHL3g=; b=lXtdTN1+U6sPwgKpniepdJKnq3ie9lc9YmzTr2ZCp8SafW48ivUax1fs0wcnppZIcX gp7zKKx9E+AF2+ciH/CElYFd/M2SsACm9Vxr0DMxHc3AOTipgDnSvfnZslCMW/85rxp+ MtFdtq3+s13dCJZF0xz+RxyDgbvLSBy6WdMjO4yg0awL9RbozsmbBOQGk9Uu0Qe3HYJp 9C1c/MyxYvV4DgeEhSnocOaBuj64Efsnd3sj03MbpPOmCQW0dpjC4Ws64Z5NCcKyWmJ/ G9mID/OQiHnl+vcKoMxhmMDF581ZYE5nIEFHAg9OiRQWff03L2e4Q5ES/E5EWkTfv7/K SJng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776630688; x=1777235488; 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=Tn6tLwXqEiX4RdZMDh5f+mmnzYxq73K+CVdhjiXHL3g=; b=DmgnZHGMwjW9QZP0Si1HZ4G0/VmONexYuCZtwvtHirPzpjupBrtYo3D8B2MJiSAtoZ rJjLyYZQc89/EIisQ7MlPJoybGFhOKZP3P0qNvuY9Ih9uuzifyDKl+JjOQ5OSNMiNVrT uSsDNNEymlw39UP1ATS8UKCF+jwRP7Udb0Rw3w2vW7WGLg9POpqk8n4IiKYnDsMo0Vd2 nbR/+bkrtTO+9Mu3ww40JLCk6edVDpDuzHrODesZx9xvrow53atSWvF3svMdHZaak8ke fNFBdMws6xU6ByxHgC0VxICxq4hclihm4wLiPdQTwGhEB6rNQLtYDqh+tnc3MvlYEqRL J9Ug== X-Forwarded-Encrypted: i=1; AFNElJ+TvzkrmDG2SujiluNE2KI4BzFY/LwcSeYeGs0dZN4ifcy2kYJK7ByNsnxpmJQPpihpxbIkt24h0+ZOYw4=@vger.kernel.org X-Gm-Message-State: AOJu0YwL5TsxQH9n86Tj2Udl3qDl8grUSpUv782Hm7IIw2qHlPja6KYc fMK4ThhqOY+WsEfBP/p5S+Es3F1lXeAoKTkSwe/BiUkw/SyZAuufHnDn X-Gm-Gg: AeBDietXtdh/UZaW8UrVFE5kuPi3QeP2m683p85HAp0cNX9su+Jihgkdf2goSGJmQqF pzg1lFad84rqrH7JDEG3ObqyLZF0+41RrJ0TYyiRzXxT/dTTWb0kP6F8syEtZi0C5uCyLwZlXen f9VnRL90x/D9gBQ/y8BUJJlzYr9PYgrH7F9nFpPq0f5X3WZ8+/qUccF+n8XVX4E831+So5uKK8J lZtUsDVd08KOV4NOx6gH8auQIbaS4aM7xiEadiEBqiq0KKXf0Xp4voQPNpZh/EnF0kTp3XB/C+2 RJJRPe9qWZHvRiNPr0szEzl+ntk62x/ITFUOfRnZ1cSK3FSgnbcQv0WzpHBkRjMc4jCGOW7YW/A vPSJ2cm9lbYYZFfDXu/e2eRDKSa+syEZVgL7fLIpf0TaXGLdYKt7BT5MsEMKWoKr0DaSz7/QtuJ WIUrHs+KQqk/u3a9AUGAoH1nfmTvuOd6G7HfmeM6rCPu6nO2Ue36G0ScnDYbGdCeGSsBlCHP48L mLqbiTS8yUtHCeMNX+dw7Hzzg== X-Received: by 2002:a05:7300:6c28:b0:2da:9a3c:8062 with SMTP id 5a478bee46e88-2e479c042cbmr6224720eec.17.1776630688482; Sun, 19 Apr 2026 13:31:28 -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-2e53ac84c38sm11419096eec.13.2026.04.19.13.31.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Apr 2026 13:31:28 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Sun, 19 Apr 2026 17:30:29 -0300 Subject: [PATCH 1/4] ALSA: usb-audio: Propagate write errors in generic mixer put 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: 8bit Message-Id: <20260419-usb-write-error-propagation-v1-1-5a3bd4a673ae@gmail.com> References: <20260419-usb-write-error-propagation-v1-0-5a3bd4a673ae@gmail.com> In-Reply-To: <20260419-usb-write-error-propagation-v1-0-5a3bd4a673ae@gmail.com> To: Takashi Iwai , Chris J Arges , Detlef Urban , 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=2274; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=P4weKcVi00t8c3FrT0ZGr8asxcuixapoIDKdFDWxtqM=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDJlPrWeG8hmaTprjvs79ExOPkV22kmSyVLVulcl2e5+Pn 23yvX06SlkYxLgYZMUUWVYnLbLc0/Xgan3cCg+YOaxMIEMYuDgFYCJ3FzP801kdx9aWJ6fHXFb+ eWVHsa3Jw6TfKtea+Bje/rP56/D7HcN/52MsG61UzkyLWudx8HDY9BYvn+e/1+qZCy8WmO/RLv2 MCwA= X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 mixer_ctl_feature_put(), mixer_ctl_procunit_put(), and mixer_ctl_selector_put() ignore failures from their SET_CUR helper routines and report the control as changed whenever the requested value differs from the current one. If the device rejects the write, userspace still sees success although the hardware state did not change. Propagate write failures instead, using filter_error() so ignore_ctl_error keeps the same semantics as the existing get paths. Signed-off-by: Cássio Gabriel --- sound/usb/mixer.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 85653112e7f3..9d9ed68166c8 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -1526,7 +1526,10 @@ static int mixer_ctl_feature_put(struct snd_kcontrol *kcontrol, return -EINVAL; val = get_abs_value(cval, val); if (oval != val) { - snd_usb_set_cur_mix_value(cval, c + 1, cnt, val); + err = snd_usb_set_cur_mix_value(cval, c + 1, + cnt, val); + if (err < 0) + return filter_error(cval, err); changed = 1; } cnt++; @@ -1541,7 +1544,9 @@ static int mixer_ctl_feature_put(struct snd_kcontrol *kcontrol, return -EINVAL; val = get_abs_value(cval, val); if (val != oval) { - snd_usb_set_cur_mix_value(cval, 0, 0, val); + err = snd_usb_set_cur_mix_value(cval, 0, 0, val); + if (err < 0) + return filter_error(cval, err); changed = 1; } } @@ -2466,7 +2471,9 @@ static int mixer_ctl_procunit_put(struct snd_kcontrol *kcontrol, return -EINVAL; val = get_abs_value(cval, val); if (val != oval) { - set_cur_ctl_value(cval, cval->control << 8, val); + err = set_cur_ctl_value(cval, cval->control << 8, val); + if (err < 0) + return filter_error(cval, err); return 1; } return 0; @@ -2832,7 +2839,9 @@ static int mixer_ctl_selector_put(struct snd_kcontrol *kcontrol, return -EINVAL; val = get_abs_value(cval, val); if (val != oval) { - set_cur_ctl_value(cval, cval->control << 8, val); + err = set_cur_ctl_value(cval, cval->control << 8, val); + if (err < 0) + return filter_error(cval, err); return 1; } return 0; -- 2.53.0