Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1352902ybt; Thu, 18 Jun 2020 06:50:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwO4mcywfGFyVbkJQCm0bCxMYpl/lGLaaviNBR9S8pk50FdPyiMNv+gSL1bt/4j/XKJEHfl X-Received: by 2002:a05:6402:155a:: with SMTP id p26mr3965768edx.376.1592488218687; Thu, 18 Jun 2020 06:50:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592488218; cv=none; d=google.com; s=arc-20160816; b=0oBUj5sIuDc4aHSEO9I7V99h19bZDyr5obgVZJIu+6BPonvkQnCt472kP/gMWoTHkC u+nyxjO9JWBtJQJlejBf1IIgRpTertueWjtMz2U784nFQ5nyDgE/bITFuCfEeklxE2p0 L7Nni5iTd1vDG34AACP8W2puvUtuov+i5CF4tjFKvn7X7NcGTaXbU+s9bFz5uWPotkml LpW/Z4HT7iYT3E/2zmPCw99oxPvbR0ibCivs4Nwc/M8W93QalnzWojYhXbizLY8Qycv2 oSiEG2xcQvtsb17S3HXQUwkmNUBRUDCEHoG7VNSbOxQpQkdt5VD2Vur/W6zCNHgckBQ/ HmCQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=r3Mvx3rBqR7sliiEYQ9wJRRoUeq5gCPSSbuR6ZufXeA=; b=WcxomGJdvgDHQJPk0ed1lvCnTDUtmrLwDNwkCMuIImQQz08CkPdlDtFSJrzeRMd1Ct 16d8ANEgptN8KrvdLCrOnIFb7LozZNhLhF03Y3140lI99Jgsc65DC+VXSjqDpV+wSzhM SpLmefNBWEwXSKRPVcPz37XKXvwFgCz8kl/NQHoB1jesE5NRe/iuDPYAh0c/cFPpVQ6H DTdUJELvc8tPWGbrqQ7fKZyoSBI6fBiPvpI6iL3Ippsz8bs5wT56VWVuCCzejfDNjkPn fcc5sOHNF2DCI8TgbyQy2+BJkzxqLMPEZ5YAko1Thwn4ifDhqSFnTU/twIYAzGCXL5cI cfhg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (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 n22si1928009edy.377.2020.06.18.06.49.55; Thu, 18 Jun 2020 06:50:18 -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; 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=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730389AbgFRNpC (ORCPT + 99 others); Thu, 18 Jun 2020 09:45:02 -0400 Received: from 212.199.177.27.static.012.net.il ([212.199.177.27]:50933 "EHLO herzl.nuvoton.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730340AbgFRNou (ORCPT ); Thu, 18 Jun 2020 09:44:50 -0400 Received: from taln60.nuvoton.co.il (ntil-fw [212.199.177.25]) by herzl.nuvoton.co.il (8.13.8/8.13.8) with ESMTP id 05IDiVSs001787; Thu, 18 Jun 2020 16:44:31 +0300 Received: by taln60.nuvoton.co.il (Postfix, from userid 10140) id 35271639BF; Thu, 18 Jun 2020 16:44:31 +0300 (IDT) From: amirmizi6@gmail.com To: Eyal.Cohen@nuvoton.com, jarkko.sakkinen@linux.intel.com, oshrialkoby85@gmail.com, alexander.steffen@infineon.com, robh+dt@kernel.org, "benoit.houyere@st.com--to=mark.rutland"@arm.com, peterhuewe@gmx.de, christophe-h.richard@st.com, jgg@ziepe.ca, arnd@arndb.de, gregkh@linuxfoundation.org Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-integrity@vger.kernel.org, oshri.alkoby@nuvoton.com, tmaimon77@gmail.com, gcwilson@us.ibm.com, kgoldman@us.ibm.com, Dan.Morav@nuvoton.com, oren.tanami@nuvoton.com, shmulik.hager@nuvoton.com, amir.mizinski@nuvoton.com, Amir Mizinski , Benoit Houyere Subject: [PATCH v11 6/8] tpm: tpm_tis: verify TPM_STS register is valid after locality request Date: Thu, 18 Jun 2020 16:43:41 +0300 Message-Id: <20200618134344.243537-7-amirmizi6@gmail.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20200618134344.243537-1-amirmizi6@gmail.com> References: <20200618134344.243537-1-amirmizi6@gmail.com> 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 From: Amir Mizinski Issue could result when the TPM does not update TPM_STS register after a locality request (TPM_STS Initial value = 0xFF) and a TPM_STS register read occurs (tpm_tis_status(chip)). Checking the next condition("if ((status & TPM_STS_COMMAND_READY) == 0)"), the status will be at 0xFF and will be considered, wrongly, in "Ready" state (by checking only one bit). However, at this moment the TPM is, in fact, in "Idle" state and remains in "Idle" state because "tpm_tis_ready(chip);" was not executed. Suggested-by: Benoit Houyere Signed-off-by: Amir Mizinski --- drivers/char/tpm/tpm_tis_core.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c index 2636ec7..fd485d2 100644 --- a/drivers/char/tpm/tpm_tis_core.c +++ b/drivers/char/tpm/tpm_tis_core.c @@ -221,8 +221,14 @@ static int request_locality(struct tpm_chip *chip, int l) } else { /* wait for burstcount */ do { - if (check_locality(chip, l)) + if (check_locality(chip, l)) { + if (wait_for_tpm_stat(chip, TPM_STS_GO, 0, + chip->timeout_c, + &priv->int_queue, + false) < 0) + return -ETIME; return l; + } tpm_msleep(TPM_TIMEOUT); } while (time_before(jiffies, stop)); } -- 2.7.4