From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D619CC43217 for ; Tue, 10 May 2022 15:58:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347259AbiEJQBd (ORCPT ); Tue, 10 May 2022 12:01:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346972AbiEJPvr (ORCPT ); Tue, 10 May 2022 11:51:47 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 731D6E7317; Tue, 10 May 2022 08:46:25 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id E7ED6B81DF7; Tue, 10 May 2022 15:46:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF227C385C9; Tue, 10 May 2022 15:46:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1652197582; bh=sitUM+pO5GY8EG+P/wbijhz0f+x6injN+PYj6XrcbLo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OfSawul0q7dT3oUX0YKR3Wb/0F+oSUeQbVoeyMypL2zIqShjD/AEiO2wWz9SXfwCL /uPIBdNJP9LeqgHicF2VEGMC625WFIJxmvFAJkJItAAt9x9kaIJAWg8XPLamBsBL3k Z0JRGt60L5UX+za57U0jI6Xow1FwBBTFov5z1WH805CHD6kHk+jXcGOWYC/vgAGATE k3M2Tr+2/655hrdvsm81ZnzRwYSXDo3AI93LLz1wznnj2Tp0/hsOPJOpRDSMwBKijl 1pLM1llSTMCVt5EDUixDRmFhn7qchC/CEUm4nEpDBJ2ChSFriSP1JX7XnH1p1wjuWI DoAqGK9DP/Qyg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Mark Brown , Sasha Levin , lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, pierre-louis.bossart@linux.intel.com, alsa-devel@alsa-project.org Subject: [PATCH AUTOSEL 4.19 2/6] ASoC: max98090: Reject invalid values in custom control put() Date: Tue, 10 May 2022 11:46:10 -0400 Message-Id: <20220510154614.154187-2-sashal@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220510154614.154187-1-sashal@kernel.org> References: <20220510154614.154187-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mark Brown [ Upstream commit 2fbe467bcbfc760a08f08475eea6bbd4c2874319 ] The max98090 driver has a custom put function for some controls which can only be updated in certain circumstances which makes no effort to validate that input is suitable for the control, allowing out of spec values to be written to the hardware and presented to userspace. Fix this by returning an error when invalid values are written. Signed-off-by: Mark Brown Link: https://lore.kernel.org/r/20220420193454.2647908-1-broonie@kernel.org Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/codecs/max98090.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c index a5b0c40ee545..6e5a4e757bf1 100644 --- a/sound/soc/codecs/max98090.c +++ b/sound/soc/codecs/max98090.c @@ -419,6 +419,9 @@ static int max98090_put_enab_tlv(struct snd_kcontrol *kcontrol, val = (val >> mc->shift) & mask; + if (sel < 0 || sel > mc->max) + return -EINVAL; + *select = sel; /* Setting a volume is only valid if it is already On */ -- 2.35.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CE887C4332F for ; Tue, 10 May 2022 15:48:58 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id F0011192A; Tue, 10 May 2022 17:48:06 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz F0011192A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1652197737; bh=sitUM+pO5GY8EG+P/wbijhz0f+x6injN+PYj6XrcbLo=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=quNVcZcrdE4rUZ8fu8mBV4VgGXyabSiSyznarf6O1T5ZDPjDOhdj3CB3qcIIPPkPD QLmOiRsYqhx+yZSG6J3USZWKlh99BNaq+vyrpotYFi5MtC0OEd0gjmBKExBtWnL0Om 0CmoCkk34RXs4Jg6I9n0DA3g1VkCGPYJg5a3yWFQ= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id C17B3F80519; Tue, 10 May 2022 17:46:28 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 3467CF8051A; Tue, 10 May 2022 17:46:27 +0200 (CEST) Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id D750FF80508 for ; Tue, 10 May 2022 17:46:24 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz D750FF80508 Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OfSawul0" Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 09AC4B81DF9; Tue, 10 May 2022 15:46:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF227C385C9; Tue, 10 May 2022 15:46:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1652197582; bh=sitUM+pO5GY8EG+P/wbijhz0f+x6injN+PYj6XrcbLo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OfSawul0q7dT3oUX0YKR3Wb/0F+oSUeQbVoeyMypL2zIqShjD/AEiO2wWz9SXfwCL /uPIBdNJP9LeqgHicF2VEGMC625WFIJxmvFAJkJItAAt9x9kaIJAWg8XPLamBsBL3k Z0JRGt60L5UX+za57U0jI6Xow1FwBBTFov5z1WH805CHD6kHk+jXcGOWYC/vgAGATE k3M2Tr+2/655hrdvsm81ZnzRwYSXDo3AI93LLz1wznnj2Tp0/hsOPJOpRDSMwBKijl 1pLM1llSTMCVt5EDUixDRmFhn7qchC/CEUm4nEpDBJ2ChSFriSP1JX7XnH1p1wjuWI DoAqGK9DP/Qyg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH AUTOSEL 4.19 2/6] ASoC: max98090: Reject invalid values in custom control put() Date: Tue, 10 May 2022 11:46:10 -0400 Message-Id: <20220510154614.154187-2-sashal@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220510154614.154187-1-sashal@kernel.org> References: <20220510154614.154187-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Cc: Sasha Levin , alsa-devel@alsa-project.org, lgirdwood@gmail.com, pierre-louis.bossart@linux.intel.com, tiwai@suse.com, Mark Brown X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" From: Mark Brown [ Upstream commit 2fbe467bcbfc760a08f08475eea6bbd4c2874319 ] The max98090 driver has a custom put function for some controls which can only be updated in certain circumstances which makes no effort to validate that input is suitable for the control, allowing out of spec values to be written to the hardware and presented to userspace. Fix this by returning an error when invalid values are written. Signed-off-by: Mark Brown Link: https://lore.kernel.org/r/20220420193454.2647908-1-broonie@kernel.org Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/codecs/max98090.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c index a5b0c40ee545..6e5a4e757bf1 100644 --- a/sound/soc/codecs/max98090.c +++ b/sound/soc/codecs/max98090.c @@ -419,6 +419,9 @@ static int max98090_put_enab_tlv(struct snd_kcontrol *kcontrol, val = (val >> mc->shift) & mask; + if (sel < 0 || sel > mc->max) + return -EINVAL; + *select = sel; /* Setting a volume is only valid if it is already On */ -- 2.35.1