Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp338158pxa; Fri, 14 Aug 2020 05:56:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzilQwDqJNupRNoU9bXP397QnIoKFnACzADhvjV0bTWAbwmwX77spafHgSDY6tJrUU4SpV7 X-Received: by 2002:a17:906:2356:: with SMTP id m22mr2208495eja.124.1597409775494; Fri, 14 Aug 2020 05:56:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597409775; cv=none; d=google.com; s=arc-20160816; b=kHuFnSHHHHCQcSErI1yaixjzJgN70zBw/FoObg6RjgMlzV7MZBYTRmBtMhTxRAzo/L A1ZvDN3/uHa+JXkyiyA9RaBq4IWQDdNds4Fhi0ZQHPEB5O2DuSgmr8tQAQ/41Kn1qwnD BFlqE0M1gS3k5xOljdx3gV+1dfs7Fq8Wu7+U2gtL0VXo956NKqRBU8wQcHTzaizFkn7t FgBDENh60vG9ZM1YwhHv6Wnqkd5PuiKd1B5CDXRXpyQxvGlWojQ6CUodsBYATE/zvFXq 7X/N5cAE3EWfaRA2GBTu66A5dmNW4WpTQHUh6o4IdXns8+5g1fVklOJ4rGgJwdrVM2RC zwoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=IMDtNR26hhEws5urGuPDuNDJnZY4acdKK7mNXzOEzD4=; b=eHvO+jKJNFVbxbE3bdFlLdPXQc9ney9CIJKbsvERs3MLifEHwlaWTnNIyfLuE0irK9 vpS4Gl7h7cE2PAzj+2Hn498/Y5IQqCRhqB6TACKayUKm47Yda28kQQ5JZKAotB+43h75 qPCcxu+CTier05gnMfv3ThDYDZ2XDKmAsO4GmD+wDx738cPFG52czWJni2RHF4urbeT6 c9hDft9bRkvnpGY+Y4Q0ilxTBgsYF0mMLyrte/q0rzyj/gy3bcu7hiHLIbG+DxSRMdY8 l6jAmAb0TN7iUgOQI4k/X5ays+8QQ94ioEndQXKDdp3cEBOuve08bEitldIXFMcKKk90 03+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mfmccwaV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u6si6019807edd.428.2020.08.14.05.55.52; Fri, 14 Aug 2020 05:56:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mfmccwaV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728246AbgHNMdd (ORCPT + 99 others); Fri, 14 Aug 2020 08:33:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48012 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727074AbgHNMdc (ORCPT ); Fri, 14 Aug 2020 08:33:32 -0400 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3AB1C061384 for ; Fri, 14 Aug 2020 05:33:31 -0700 (PDT) Received: by mail-pf1-x443.google.com with SMTP id y206so4486341pfb.10 for ; Fri, 14 Aug 2020 05:33:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=IMDtNR26hhEws5urGuPDuNDJnZY4acdKK7mNXzOEzD4=; b=mfmccwaVDf8eBSVHF2kqV/jf8XJvqpNdJXpniiM9SNN7/X3M3Uq4wG35Ykymlyorrp sNIjDj4gI2t7BgmMBn1dAujA4Vzbf9EPhZQJccpoJr3Mei1a461MYkXiwEp7JQJyUoQA SDhiFQ00Q+JQ6ooc5pzg5vyvIlZCDNPFueU/82a1faa079k4T+nVbBdO+qrmM4Xeh2/S 3wBDa1/fr3Jcsl7v1QzQ1gtVFt4CCnlH9nZYAO/I0Pa8HpE/dO5me6jgS7vDayMTRhvh 6Gkr+/oTvIE5DGEG29CVkWA8x6asq84pGXbiTrNIrRpF9/NyivEsY5GOH20ccLEEDjJH NgbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=IMDtNR26hhEws5urGuPDuNDJnZY4acdKK7mNXzOEzD4=; b=SVxxnGRfK19txCdxh8HvLO0zqqptg988JAFeg7fjKegJATnBb6v59QMJM0YMjlyCfN q/KKhK1uVY3VBLiVpFRfgwX1wIDNfJtNy5y0pR1u2notQ5jtn83qvnwtsWFpYVtmGqzB s3cuztHsy/pK2J367Q4YTwgVzEE5hTojGtYQrYkcoTjZ2n4Rot1pA8GDpQb3sjtSfMVn HggeLXsPVchQAM4RHz2bYobLBu4eo2U+UQfLqCom8x+3Tf2JwrcyE2gQyekFls7MTl2Q k/UDhOyPml3CymvyDTJp8xAecl0jHsYUxx/A/HAQTcGWVr2darKtdWGs6+P14j9C2/F0 /HFw== X-Gm-Message-State: AOAM532tJGIfN7LiVNfvEpIDa1aYiUGcZ/BjCk9w1QxDf4HVDKQ/g4S0 GC8937S9vEo/Nb1i5YGXEPs= X-Received: by 2002:a63:ce56:: with SMTP id r22mr1624540pgi.141.1597408411457; Fri, 14 Aug 2020 05:33:31 -0700 (PDT) Received: from cvds-vagarw7.iind.intel.com ([192.55.54.40]) by smtp.googlemail.com with ESMTPSA id x8sm9808957pfp.101.2020.08.14.05.33.24 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 14 Aug 2020 05:33:31 -0700 (PDT) From: Vaibhav Agarwal To: Greg Kroah-Hartman , Alex Elder , Johan Hovold , Mark Greer Cc: greybus-dev@lists.linaro.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Vaibhav Agarwal , Colin Ian King Subject: [PATCH v3] staging: greybus: audio: fix uninitialized value issue Date: Fri, 14 Aug 2020 18:03:15 +0530 Message-Id: X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The current implementation for gbcodec_mixer_dapm_ctl_put() uses uninitialized gbvalue for comparison with updated value. This was found using static analysis with coverity. Uninitialized scalar variable (UNINIT) 11. uninit_use: Using uninitialized value gbvalue.value.integer_value[0]. 460 if (gbvalue.value.integer_value[0] != val) { This patch fixes the issue with fetching the gbvalue before using it for comparision. Fixes: 6339d2322c47 ("greybus: audio: Add topology parser for GB codec") Reported-by: Colin Ian King Signed-off-by: Vaibhav Agarwal --- Changelog: v2: Fix the missing check for return value after get_control. v3: Use single exit path to avoid missing autosuspend sequence. --- drivers/staging/greybus/audio_topology.c | 29 ++++++++++++------------ 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/drivers/staging/greybus/audio_topology.c b/drivers/staging/greybus/audio_topology.c index 2f9fdbdcd547..83b38ae8908c 100644 --- a/drivers/staging/greybus/audio_topology.c +++ b/drivers/staging/greybus/audio_topology.c @@ -456,6 +456,15 @@ static int gbcodec_mixer_dapm_ctl_put(struct snd_kcontrol *kcontrol, val = ucontrol->value.integer.value[0] & mask; connect = !!val; + ret = gb_pm_runtime_get_sync(bundle); + if (ret) + return ret; + + ret = gb_audio_gb_get_control(module->mgmt_connection, data->ctl_id, + GB_AUDIO_INVALID_INDEX, &gbvalue); + if (ret) + goto exit; + /* update ucontrol */ if (gbvalue.value.integer_value[0] != val) { for (wi = 0; wi < wlist->num_widgets; wi++) { @@ -466,25 +475,17 @@ static int gbcodec_mixer_dapm_ctl_put(struct snd_kcontrol *kcontrol, gbvalue.value.integer_value[0] = cpu_to_le32(ucontrol->value.integer.value[0]); - ret = gb_pm_runtime_get_sync(bundle); - if (ret) - return ret; - ret = gb_audio_gb_set_control(module->mgmt_connection, data->ctl_id, GB_AUDIO_INVALID_INDEX, &gbvalue); - - gb_pm_runtime_put_autosuspend(bundle); - - if (ret) { - dev_err_ratelimited(codec_dev, - "%d:Error in %s for %s\n", ret, - __func__, kcontrol->id.name); - return ret; - } } - return 0; +exit: + gb_pm_runtime_put_autosuspend(bundle); + if (ret) + dev_err_ratelimited(codec_dev, "%d:Error in %s for %s\n", ret, + __func__, kcontrol->id.name); + return ret; } #define SOC_DAPM_MIXER_GB(xname, kcount, data) \ base-commit: fc80c51fd4b23ec007e88d4c688f2cac1b8648e7 -- 2.27.0