From patchwork Wed Jun 22 01:10:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Swierk X-Patchwork-Id: 9191637 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 23AFF6089F for ; Wed, 22 Jun 2016 01:11:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 10A8128365 for ; Wed, 22 Jun 2016 01:11:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 05EE92838D; Wed, 22 Jun 2016 01:11:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7F2AB2837F for ; Wed, 22 Jun 2016 01:11:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752071AbcFVBKx (ORCPT ); Tue, 21 Jun 2016 21:10:53 -0400 Received: from mail-pf0-f181.google.com ([209.85.192.181]:35251 "EHLO mail-pf0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752057AbcFVBKw (ORCPT ); Tue, 21 Jun 2016 21:10:52 -0400 Received: by mail-pf0-f181.google.com with SMTP id c2so11851611pfa.2 for ; Tue, 21 Jun 2016 18:10:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skyportsystems.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=O4Tj0NWSO0mM9Wc38e0Qdulxf5bmpMgM+DvBuc00hZk=; b=Urh1HJUv/noFMzR7TdqmchWY7CYEUMF4LULeY3v4K9ETffsO1zJN9YnpAs5v2A9OjJ W8OEL+JVIFtG27aCcCZSMAilkcCPAmfjG7zsq48ZzSJ+LGi6pIDE4Qe4iwTPdYIAzZAM MhYcARPGAotbrYH1nN/2niQmHmrNUXtcSalSg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=O4Tj0NWSO0mM9Wc38e0Qdulxf5bmpMgM+DvBuc00hZk=; b=kLvbDpAQ33bZ/4874PI96anFSxeni9QtOmplHki+EhZPuXF1l5RM+kh9bPKiCnLvL7 m0qiSgRnVVt32dBezrrX3NNRn7+sWHrVcIHOkQuPEWz+Qg3EtwqTEJS596esxXCyoLam XlnGud0fRq8Jyk2/wNIHkhExyessgpvhT4Kk+xynGCBIlAFlnaFePFfKGgsk8jPNpHX5 lNtZyV7dnq1h16CxVI0bp0SLolnvtzbBNtdm1qMKw/tyKA4RNQKf9aHAKuW0aSfLGeqB Xi1KS80P6ZMAuVJjcDk50ukFkVSA+Ayl5Z+LMwjGRy4Xz8I9HAd/X43IR4FHtH+DTFOD yfBA== X-Gm-Message-State: ALyK8tKSQdRy3+1+zjNLs7rHwLxxy71yXGHNkc987Wgi1Nn6C9JCe92zlRvrnOeoMaGIr6bS X-Received: by 10.98.61.131 with SMTP id x3mr24654192pfj.115.1466557851470; Tue, 21 Jun 2016 18:10:51 -0700 (PDT) Received: from eswierk-sc.localdomain (67-207-112-138.static.wiline.com. [67.207.112.138]) by smtp.gmail.com with ESMTPSA id g26sm74800523pfj.82.2016.06.21.18.10.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 21 Jun 2016 18:10:50 -0700 (PDT) From: Ed Swierk To: tpmdd-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org Cc: jarkko.sakkinen@linux.intel.com, jgunthorpe@obsidianresearch.com, stefanb@us.ibm.com, eswierk@skyportsystems.com Subject: [PATCH v8 1/5] tpm_tis: Improve reporting of IO errors Date: Tue, 21 Jun 2016 18:10:27 -0700 Message-Id: <1466557831-113440-2-git-send-email-eswierk@skyportsystems.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1466557831-113440-1-git-send-email-eswierk@skyportsystems.com> References: <1466474042-110773-1-git-send-email-eswierk@skyportsystems.com> <1466557831-113440-1-git-send-email-eswierk@skyportsystems.com> Sender: owner-linux-security-module@vger.kernel.org Precedence: bulk List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Mysterious TPM behavior can be difficult to track down through all the layers of software. Add error messages for conditions that should never happen. Also include the manufacturer ID along with other chip data printed during init. Signed-off-by: Ed Swierk Reviewed-by: Jarkko Sakkinen --- drivers/char/tpm/tpm_tis.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c index 65f7eec..088fa86 100644 --- a/drivers/char/tpm/tpm_tis.c +++ b/drivers/char/tpm/tpm_tis.c @@ -299,6 +299,8 @@ static int tpm_tis_recv(struct tpm_chip *chip, u8 *buf, size_t count) expected = be32_to_cpu(*(__be32 *) (buf + 2)); if (expected > count) { + dev_err(chip->pdev, "Response too long (wanted %zd, got %d)\n", + count, expected); size = -EIO; goto out; } @@ -366,6 +368,8 @@ static int tpm_tis_send_data(struct tpm_chip *chip, u8 *buf, size_t len) &chip->vendor.int_queue, false); status = tpm_tis_status(chip); if (!itpm && (status & TPM_STS_DATA_EXPECT) == 0) { + dev_err(chip->pdev, "Chip not accepting %zd bytes\n", + len - count); rc = -EIO; goto out_err; } @@ -378,6 +382,7 @@ static int tpm_tis_send_data(struct tpm_chip *chip, u8 *buf, size_t len) &chip->vendor.int_queue, false); status = tpm_tis_status(chip); if ((status & TPM_STS_DATA_EXPECT) != 0) { + dev_err(chip->pdev, "Chip not accepting last byte\n"); rc = -EIO; goto out_err; } @@ -689,8 +694,9 @@ static int tpm_tis_init(struct device *dev, struct tpm_info *tpm_info, vendor = ioread32(chip->vendor.iobase + TPM_DID_VID(0)); chip->vendor.manufacturer_id = vendor; - dev_info(dev, "%s TPM (device-id 0x%X, rev-id %d)\n", + dev_info(dev, "%s TPM (manufacturer-id 0x%X, device-id 0x%X, rev-id %d)\n", (chip->flags & TPM_CHIP_FLAG_TPM2) ? "2.0" : "1.2", + chip->vendor.manufacturer_id, vendor >> 16, ioread8(chip->vendor.iobase + TPM_RID(0))); if (!itpm) {