From patchwork Thu Nov 10 15:25:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Lino Sanfilippo X-Patchwork-Id: 13038931 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 68EA5C07E9D for ; Thu, 10 Nov 2022 15:26:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230183AbiKJP0m (ORCPT ); Thu, 10 Nov 2022 10:26:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231571AbiKJP01 (ORCPT ); Thu, 10 Nov 2022 10:26:27 -0500 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D23613FB99; Thu, 10 Nov 2022 07:26:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1668093944; bh=A5gzN4mXM9p6SpYjvt1lyWJmsiJr8fpb+zizXUo+H9o=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=aQYQBr00g43DpNg8GIwA7D2/ec+yjFMyRLzCm+1dyHU3YM9oMFDvnMJbcyYmVaaTe NKd82ePb0x8TE5kqri7H9vT5gHl2dwIayrPSBORsh9rlVJZ+dOuMq+95p4NR8BOuli j2IT7XWLWVLRmDDeR+wk248ITd1SXnVIqV9fICua/UX797eQV8ff3nGs1WY3aMqMSk Zj7mySuI85pKWf6KQgccM7oGv4jGiMzDZsC291lfZ5Nzkow8vDvvm9/qRrd+rEuTXc J1bL1DbRZzmEpWxMChFjbst3RkiPRkHUBAoKnmwAjUM4IVXB61DSpqxCza+TMXSEax ZA3RjYvCViOOw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from Venus.speedport.ip ([84.162.7.17]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N1OXT-1p0Gqh0Zch-012mEg; Thu, 10 Nov 2022 16:25:44 +0100 From: Lino Sanfilippo To: peterhuewe@gmx.de, jarkko@kernel.org, jgg@ziepe.ca Cc: stefanb@linux.vnet.ibm.com, linux@mniewoehner.de, linux-integrity@vger.kernel.org, linux-kernel@vger.kernel.org, jandryuk@gmail.com, pmenzel@molgen.mpg.de, l.sanfilippo@kunbus.com, LinoSanfilippo@gmx.de, lukas@wunner.de, p.rosenberger@kunbus.com Subject: [PATCH v9 04/12] tpm, tmp_tis: Claim locality before writing interrupt registers Date: Thu, 10 Nov 2022 16:25:25 +0100 Message-Id: <20221110152533.24243-5-LinoSanfilippo@gmx.de> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20221110152533.24243-1-LinoSanfilippo@gmx.de> References: <20221110152533.24243-1-LinoSanfilippo@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:9JTDDUP+gYrcmMFZPrNVpj07srKJyJojblE902lVdz7CnXEmkn+ nwSSGUKFfFNIGWWHdG/A+jG73iZcg2QVhPYDse+9pAYnS5dzKw3RJ0n5Daa9UhOy5qQNWiy dRkUa41KJkfekRHGHGxb2nJS8pyEfuclc6/s9FVfjQ80KMDyoBkMcQMhGDWtEVEJEkAEmDY 4bOJh2FDixzjOoNULIYtA== UI-OutboundReport: notjunk:1;M01:P0:99nGA77ETq8=;zqPhrmF94xabbY0BG0vFtOY/9zR EaSOZO7cx8OzDNHXr0yxk97BnfJ/qYdiTyrSZw49oNEAVtXtyKjnJAiSr7zw/3FX6Neq0ZVXt fcOnE+J1+xfAmZwRz8sD8BEsD+EKZr1QttLMqari3wEb2lDHFV3FThxBkvXNbNl0AArvbMsn2 e1B7XRgqgSF4GA+B/wM2f31zgVGiMUK+vhK/K8fYXy5mZOaEEEELeESxzCHIJIMXE0pGjxJ4T aTwC+4urnSbU0Ddoj5wpCSJccg2UOR/04yBkUPm3ViNiGR0scVQFzecmqUh7iKg4jgoNnlHj9 8ZypagiW2DxybRrsP4DLedUZEBY58A0jfBRxBOx5Wwgo6x7rORZmzj6POgD/JxpYHxdQV5pMi 8jClLjzZCIIA3HJaWvQKv8KSZWh7luuv60hyNa3LxVqRXbd5WHMdfgCqcrftTz+HIaBWyq9qN Pmi13NeT92C6b3Lm99IFfIetD3Efsv7fl4dHkpPleQQ8EnEbpQA77ri7jf3InnnQ1FMZRB1lf jqGhok366TmFHjX61vI+xkrYvClk5E8XCJ60Eur19udFw22QygiDCd0AJycNd0WjsYH5RML5c ZVRmApi2+ukLnb1WVB9LyjzC/e+nf5Epdhp/fKjX2bdscJyEr0yrQgZfqeP66Y5bH6bd90uL3 dTkQxj8qdxwlyJJhAUyCNIl2p9eR1XcKHZ0rW8vnlaa9bLui5KbRA2BaROBmOtWyjWdE6mruB Upkj6Nz9VHv9YPlfQhYJcR5UaOLGCyaLpKPPlQyr7RS/iCDbP5VCCc//3XC1uji5L6Tq6TO1S S0XU1VzqXWREUIOTuq0kl8DhKFbJDn5KF5GcpECHeXqXKJxba/xINY2CnAG873tRVC5cQe8xU hlfH2PfcdiL8HraYnruGxbiKBM6NBcluYt1OuClTvzzSa5CyF/SUxV3tYU4Mk9zHGM4+9XbgU eJDBSYKRQyEOzADh8RyPU08Z2Fc= Precedence: bulk List-ID: X-Mailing-List: linux-integrity@vger.kernel.org From: Lino Sanfilippo In tpm_tis_probe_single_irq() interrupt registers TPM_INT_VECTOR, TPM_INT_STATUS and TPM_INT_ENABLE are modified to setup the interrupts. Currently these modifications are done without holding a locality thus they have no effect. Fix this by claiming the (default) locality before the registers are written. Signed-off-by: Lino Sanfilippo Reviewed-by: Jarkko Sakkinen Tested-by: Michael Niewöhner --- drivers/char/tpm/tpm_tis_core.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c index 603b82ca56da..52205a1fee9e 100644 --- a/drivers/char/tpm/tpm_tis_core.c +++ b/drivers/char/tpm/tpm_tis_core.c @@ -770,30 +770,45 @@ static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask, } priv->irq = irq; + rc = request_locality(chip, 0); + if (rc < 0) + return rc; + rc = tpm_tis_read8(priv, TPM_INT_VECTOR(priv->locality), &original_int_vec); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } rc = tpm_tis_write8(priv, TPM_INT_VECTOR(priv->locality), irq); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } rc = tpm_tis_read32(priv, TPM_INT_STATUS(priv->locality), &int_status); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } /* Clear all existing */ rc = tpm_tis_write32(priv, TPM_INT_STATUS(priv->locality), int_status); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } /* Turn on */ rc = tpm_tis_write32(priv, TPM_INT_ENABLE(priv->locality), intmask | TPM_GLOBAL_INT_ENABLE); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } + release_locality(chip, priv->locality); clear_bit(TPM_TIS_IRQ_TESTED, &priv->flags); /* Generate an interrupt by having the core call through to