Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755928AbcDGLaw (ORCPT ); Thu, 7 Apr 2016 07:30:52 -0400 Received: from mga11.intel.com ([192.55.52.93]:28571 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755458AbcDGLau (ORCPT ); Thu, 7 Apr 2016 07:30:50 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,449,1455004800"; d="scan'208";a="682350567" Date: Thu, 7 Apr 2016 14:30:46 +0300 From: Jarkko Sakkinen To: Christophe Ricard Cc: Jason Gunthorpe , Peter Huewe , Marcel Selhorst , "moderated list:TPM DEVICE DRIVER" , open list , Jean-Luc BLANC , Benoit HOUYERE Subject: Re: [PATCH] tpm: remove redundant code from self-test functions Message-ID: <20160407113046.GA12554@intel.com> References: <1459344045-21602-1-git-send-email-jarkko.sakkinen@linux.intel.com> <20160331054623.GB20504@obsidianresearch.com> <20160331063756.GA6393@intel.com> <20160402031615.GA28449@obsidianresearch.com> <20160405094221.GA12672@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2648 Lines: 68 On Wed, Apr 06, 2016 at 04:03:52PM +0200, Christophe Ricard wrote: > Hi Jarkko, > > I think there is a bug in the current version of this patch. > tpm1_pcr_read returns TPM status code (>= 0) > > In tpm_do_selftest, after tpm1_pcr_read, rc is compared with > TPM_HEADER_SIZE. > > In short: > "if (rc == TPM_ERR_DISABLED || rc == TPM_ERR_DEACTIVATED) {" is never > reached because TPM_ERR_DISABLED(0x7) and TPM_ERR_DEACTIVATED(0x6) are < > TPM_HEADER size. > TPM_HEADER_SIZE beeing already checked in tpm_transmit_cmd, i think a > reasonable fix will be to remove: > if (rc < TPM_HEADER_SIZE) >        return -EFAULT; > > in tpm_do_self_test. > > Can you merge this fix into the current patch or do you want me to send it > to you ? This is my bad and thanks for catching this. I tested the patch but for some reason the patch that I sent to LKML does not have this check removed. The check can be safely removed because the same check is done internally by tpm_transmit(). For now I removed the patch from my master branch since there is a crash that I'm debugging and this is low priority change. I'll include this change among couple of other patches to a patches to a patch set that unifies all parts to call tpm_transmit_cmd() later on. Thanks again for spotting this! /Jarkko > Best Regards > Christophe > 2016-04-05 11:42 GMT+02:00 Jarkko Sakkinen > : > > On Fri, Apr 01, 2016 at 09:16:15PM -0600, Jason Gunthorpe wrote: > > On Thu, Mar 31, 2016 at 09:37:56AM +0300, Jarkko Sakkinen wrote: > > > On Wed, Mar 30, 2016 at 11:46:23PM -0600, Jason Gunthorpe wrote: > > > > On Wed, Mar 30, 2016 at 04:20:45PM +0300, Jarkko Sakkinen wrote: > > > > > > > > > -               rc = > be32_to_cpu(cmd.header.out.return_code); > > > > >                 if (rc == TPM_ERR_DISABLED || rc == > TPM_ERR_DEACTIVATED) { > > > > > > > > This line is the entire reason it is open coded, I see it being > > > > removed, but I don't see how the functionality is maintained? > > > > > > When tpm_trance_cmd() returns a positive number it is the TPM error > code > > > that it returns. tpm_pcr_read() does pass through whatever > > > tpm_trace_cmd() returns so the above condition should still work as > > > expected. > > > > Okay, everything looks fine to me > > I applied this to http://git.infradead.org/users/jjs/linux-tpmdd.git in > order to get exposure (tested-by's are always welcome). > > > Jason > /Jarkko