Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp2220691pxb; Fri, 25 Mar 2022 13:18:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxZT6bwoogkm7nmBke2jnWmtkegFCpCgIOm3OS/67RIEKpoIKPgmoRuP7sVKxUM8/uko3im X-Received: by 2002:aa7:8893:0:b0:4fb:10e1:8976 with SMTP id z19-20020aa78893000000b004fb10e18976mr4982559pfe.36.1648239509018; Fri, 25 Mar 2022 13:18:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648239509; cv=none; d=google.com; s=arc-20160816; b=AEmqx4A5ymji/s/6lp/zFZBygkbGSkc5e1kiwVgmp5IaS1PO7ghMsREOoiSA7ej8oJ aAo/YCelapIOh0qs9oaeno2v6fTBlNkLe/CeqePTrEr3OEZEsQG2yWJXDEwd65YjV5+8 ++Hm9s+LIZuZd/TknhiKHoGvZtg38TdBBU69gDt5El7oKC0xhE4FPjHBqvULp/R/2iRp iJem8uTg5EzjUWSnhXPGUBauTwm9WcOtYIBPSUdrlghScfOKrFxK9Fg42RKGKcMmSeAW OJNGX052UnRT2ucvQL4SjhBMgKo8J4uauoRqdXNz7wqXMLd0DrYUKSilxz6iUqy4dys3 eQ/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=q7IcE0OISoT/FjwMpJ0LZ3QA+QXj5YBJCFcw2MWsXqw=; b=bButXITFZwPPQz4epyGZiUxvR37M2KhuTZJE/zHqkwpcrpSOy8VayWwlZR8MgIZ1Tv TEyA6+RHNVHdJWQhhjnAAeb0QXIz4a3fz0vh/FhmV0ZY0qS6KxGW8I2pgiTRHYsg/yGz LrXzfhrFjDPJGLVVIsoa1KDRA5rIh5Xg+CV92SGL5Y/1OESQdccNzIuFH/djCbOHcVH2 f+xuR4Py+I5ZomYnmwYd2SJmUQgDN6kE+WGfL6AQySzHcOOlk1aY+SMcIQBrkB5FpWex JReMGdZugo8Sq6yghXwZ1guq4MtQ5Uoh1uvHZAvr1VIsj8kvbAw3Gu0SK4P9SdrKf33n LAWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=NNKcIK4x; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id g5-20020a17090a9b8500b001c6fd2c181dsi6848875pjp.94.2022.03.25.13.18.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Mar 2022 13:18:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=NNKcIK4x; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 751F93E3F26; Fri, 25 Mar 2022 12:16:49 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376628AbiCYPaH (ORCPT + 99 others); Fri, 25 Mar 2022 11:30:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377743AbiCYPYc (ORCPT ); Fri, 25 Mar 2022 11:24:32 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EB554E9C95; Fri, 25 Mar 2022 08:18:51 -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 71E7BB82865; Fri, 25 Mar 2022 15:18:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CFFC2C340E9; Fri, 25 Mar 2022 15:18:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1648221529; bh=JCOVLHohscIa00QIH1ZFiQHu3Zt5Fac47pp88wkyeaI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NNKcIK4xSutmqO6aUY5JB8Vj0x9I6FVuZNSNq9lnulL74oxT0LdWcxuDdABC8xpK9 M+wBF1igVUPgQXqD8tPv94nk2fo/+YCqok+N78nSkKxQdL58Shjj1yapfb6SfQ6wK/ gOS6oBLu0PAmLjJrpTxEkDLrt9gsart3z/kYsdKA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Giacomo Guiduzzi , Paolo Valente , Takashi Iwai Subject: [PATCH 5.17 18/39] ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec Date: Fri, 25 Mar 2022 16:14:33 +0100 Message-Id: <20220325150420.764837965@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220325150420.245733653@linuxfoundation.org> References: <20220325150420.245733653@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Giacomo Guiduzzi commit 17aaf0193392cb3451bf0ac75ba396ec4cbded6e upstream. Tests 72 and 78 for ALSA in kselftest fail due to reading inconsistent values from some devices on a VirtualBox Virtual Machine using the snd_intel8x0 driver for the AC'97 Audio Controller device. Taking for example test number 72, this is what the test reports: "Surround Playback Volume.0 expected 1 but read 0, is_volatile 0" "Surround Playback Volume.1 expected 0 but read 1, is_volatile 0" These errors repeat for each value from 0 to 31. Taking a look at these error messages it is possible to notice that the written values are read back swapped. When the write is performed, these values are initially stored in an array used to sanity-check them and write them in the pcmreg array. To write them, the two one-byte values are packed together in a two-byte variable through bitwise operations: the first value is shifted left by one byte and the second value is stored in the right byte through a bitwise OR. When reading the values back, right shifts are performed to retrieve the previously stored bytes. These shifts are executed in the wrong order, thus reporting the values swapped as shown above. This patch fixes this mistake by reversing the read operations' order. Signed-off-by: Giacomo Guiduzzi Signed-off-by: Paolo Valente Cc: Link: https://lore.kernel.org/r/20220322200653.15862-1-guiduzzi.giacomo@gmail.com Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/pci/ac97/ac97_codec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c @@ -938,8 +938,8 @@ static int snd_ac97_ad18xx_pcm_get_volum int codec = kcontrol->private_value & 3; mutex_lock(&ac97->page_mutex); - ucontrol->value.integer.value[0] = 31 - ((ac97->spec.ad18xx.pcmreg[codec] >> 0) & 31); - ucontrol->value.integer.value[1] = 31 - ((ac97->spec.ad18xx.pcmreg[codec] >> 8) & 31); + ucontrol->value.integer.value[0] = 31 - ((ac97->spec.ad18xx.pcmreg[codec] >> 8) & 31); + ucontrol->value.integer.value[1] = 31 - ((ac97->spec.ad18xx.pcmreg[codec] >> 0) & 31); mutex_unlock(&ac97->page_mutex); return 0; }