From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com ([134.134.136.100]:26183 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751209AbeEHKzR (ORCPT ); Tue, 8 May 2018 06:55:17 -0400 Date: Tue, 8 May 2018 13:55:15 +0300 From: Jarkko Sakkinen To: "David R. Bild" , James Bottomley , philip.b.tricca@intel.com Cc: Jason Gunthorpe , Greg Kroah-Hartman , Peter Huewe , linux-usb@vger.kernel.org, linux-integrity@vger.kernel.org Subject: Re: [PATCH v3 2/2] usb: misc: xapea00x: perform platform initialization of TPM Message-ID: <20180508105515.GB6132@linux.intel.com> References: <20180430125418.31344-1-david.bild@xaptum.com> <20180504130022.5231-3-david.bild@xaptum.com> <20180504190638.ikqhdvcqccakzdjd@ziepe.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: Sender: linux-integrity-owner@vger.kernel.org List-ID: On Fri, May 04, 2018 at 02:56:25PM -0500, David R. Bild wrote: > On Fri, May 4, 2018 at 2:06 PM, Jason Gunthorpe wrote: > > > > On Fri, May 04, 2018 at 08:00:22AM -0500, David R. Bild wrote: > > > Normally the system platform (i.e., BIOS/UEFI for x86) is responsible > > > for performing initialization of the TPM. For these modules, the host > > > kernel is the platform, so we perform the initialization in the driver > > > before registering the TPM with the kernel TPM subsystem. > > > > The tpm driver already does most of this stuff automatically, why > > duplicate it there and why is it coded in a way that doesn't use the > > existing TPM services to do it? > > I didn't want to have to duplicate all that functionality and was > disappointed when that became the only option (due to the two reasons > outlined below) for supporting existing kernels with an out-of-tree > module. > > Bringing the module in-tree opens the option of reworking some of the > TPM subsystem to support this use case. I'm open to concrete > suggestions on how to do so. > > 1) The first reason is that I don't think the necessary pieces are > currently made available for reuse. I'd love to not repeat that code, > but > > - some required structs and functions are declared in private headers > (drivers/char/tpm/*.h instead of include/linux/tpm.h). > - many of the required functions are not exported. > > If the TPM maintainers are open to more of the API being "public", I > can look into preparing patches that export the necessary operations. > > 2) The second reason is that the initialization done by the driver is > work that should be done by platform, before the kernel ever sees the > TPM. This is too speculative to give any confirmitive promises. Do not fully understand the reasoning. For example: why should I care about out-of-tree modules? I can look code changes but the text above contains too many words to nail anything down. I'm confused. > In particular, it sets the credentials for the platform hierarchy. > The platform hierarchy is essentially the "root" account of the TPM, > so it's critical that those credentials be set before the TPM is > exposed to user-space. (The platform credentials aren't persisted in > the TPM and must be set by the platform on every boot.) If the driver > registers the TPM before doing initialization, there's a chance that > something else could access the TPM before the platform credentials > get set. Maybe. Not sure yet where to draw the line eg should TSS2 daemon to do it for example. James? Philip? /Jarkko From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v3,2/2] usb: misc: xapea00x: perform platform initialization of TPM From: Jarkko Sakkinen Message-Id: <20180508105515.GB6132@linux.intel.com> Date: Tue, 8 May 2018 13:55:15 +0300 To: "David R. Bild" , James Bottomley , philip.b.tricca@intel.com Cc: Jason Gunthorpe , Greg Kroah-Hartman , Peter Huewe , linux-usb@vger.kernel.org, linux-integrity@vger.kernel.org List-ID: T24gRnJpLCBNYXkgMDQsIDIwMTggYXQgMDI6NTY6MjVQTSAtMDUwMCwgRGF2aWQgUi4gQmlsZCB3 cm90ZToKPiBPbiBGcmksIE1heSA0LCAyMDE4IGF0IDI6MDYgUE0sIEphc29uIEd1bnRob3JwZSA8 amdnQHppZXBlLmNhPiB3cm90ZToKPiA+Cj4gPiBPbiBGcmksIE1heSAwNCwgMjAxOCBhdCAwODow MDoyMkFNIC0wNTAwLCBEYXZpZCBSLiBCaWxkIHdyb3RlOgo+ID4gPiBOb3JtYWxseSB0aGUgc3lz dGVtIHBsYXRmb3JtIChpLmUuLCBCSU9TL1VFRkkgZm9yIHg4NikgaXMgcmVzcG9uc2libGUKPiA+ ID4gZm9yIHBlcmZvcm1pbmcgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFRQTS4gIEZvciB0aGVzZSBt b2R1bGVzLCB0aGUgaG9zdAo+ID4gPiBrZXJuZWwgaXMgdGhlIHBsYXRmb3JtLCBzbyB3ZSBwZXJm b3JtIHRoZSBpbml0aWFsaXphdGlvbiBpbiB0aGUgZHJpdmVyCj4gPiA+IGJlZm9yZSByZWdpc3Rl cmluZyB0aGUgVFBNIHdpdGggdGhlIGtlcm5lbCBUUE0gc3Vic3lzdGVtLgo+ID4KPiA+IFRoZSB0 cG0gZHJpdmVyIGFscmVhZHkgZG9lcyBtb3N0IG9mIHRoaXMgc3R1ZmYgYXV0b21hdGljYWxseSwg d2h5Cj4gPiBkdXBsaWNhdGUgaXQgdGhlcmUgYW5kIHdoeSBpcyBpdCBjb2RlZCBpbiBhIHdheSB0 aGF0IGRvZXNuJ3QgdXNlIHRoZQo+ID4gZXhpc3RpbmcgVFBNIHNlcnZpY2VzIHRvIGRvIGl0Pwo+ IAo+IEkgZGlkbid0IHdhbnQgdG8gaGF2ZSB0byBkdXBsaWNhdGUgYWxsIHRoYXQgZnVuY3Rpb25h bGl0eSBhbmQgd2FzCj4gZGlzYXBwb2ludGVkIHdoZW4gdGhhdCBiZWNhbWUgdGhlIG9ubHkgb3B0 aW9uIChkdWUgdG8gdGhlIHR3byByZWFzb25zCj4gb3V0bGluZWQgYmVsb3cpIGZvciBzdXBwb3J0 aW5nIGV4aXN0aW5nIGtlcm5lbHMgd2l0aCBhbiBvdXQtb2YtdHJlZQo+IG1vZHVsZS4KPiAKPiBC cmluZ2luZyB0aGUgbW9kdWxlIGluLXRyZWUgb3BlbnMgdGhlIG9wdGlvbiBvZiByZXdvcmtpbmcg c29tZSBvZiB0aGUKPiBUUE0gc3Vic3lzdGVtIHRvIHN1cHBvcnQgdGhpcyB1c2UgY2FzZS4gIEkn bSBvcGVuIHRvIGNvbmNyZXRlCj4gc3VnZ2VzdGlvbnMgb24gaG93IHRvIGRvIHNvLgo+IAo+IDEp IFRoZSBmaXJzdCByZWFzb24gaXMgdGhhdCBJIGRvbid0IHRoaW5rIHRoZSBuZWNlc3NhcnkgcGll Y2VzIGFyZQo+IGN1cnJlbnRseSBtYWRlIGF2YWlsYWJsZSBmb3IgcmV1c2UuIEknZCBsb3ZlIHRv IG5vdCByZXBlYXQgdGhhdCBjb2RlLAo+IGJ1dAo+IAo+IC0gc29tZSByZXF1aXJlZCBzdHJ1Y3Rz IGFuZCBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIGluIHByaXZhdGUgaGVhZGVycwo+IChkcml2ZXJz L2NoYXIvdHBtLyouaCBpbnN0ZWFkIG9mIGluY2x1ZGUvbGludXgvdHBtLmgpLgo+IC0gbWFueSBv ZiB0aGUgcmVxdWlyZWQgZnVuY3Rpb25zIGFyZSBub3QgZXhwb3J0ZWQuCj4gCj4gSWYgdGhlIFRQ TSBtYWludGFpbmVycyBhcmUgb3BlbiB0byBtb3JlIG9mIHRoZSBBUEkgYmVpbmcgInB1YmxpYyIs IEkKPiBjYW4gbG9vayBpbnRvIHByZXBhcmluZyBwYXRjaGVzIHRoYXQgZXhwb3J0IHRoZSBuZWNl c3Nhcnkgb3BlcmF0aW9ucy4KPiAKPiAyKSBUaGUgc2Vjb25kIHJlYXNvbiBpcyB0aGF0IHRoZSBp bml0aWFsaXphdGlvbiBkb25lIGJ5IHRoZSBkcml2ZXIgaXMKPiB3b3JrIHRoYXQgc2hvdWxkIGJl IGRvbmUgYnkgcGxhdGZvcm0sIGJlZm9yZSB0aGUga2VybmVsIGV2ZXIgc2VlcyB0aGUKPiBUUE0u CgpUaGlzIGlzIHRvbyBzcGVjdWxhdGl2ZSB0byBnaXZlIGFueSBjb25maXJtaXRpdmUgcHJvbWlz ZXMuIERvIG5vdCBmdWxseQp1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcuIEZvciBleGFtcGxlOiB3 aHkgc2hvdWxkIEkgY2FyZSBhYm91dApvdXQtb2YtdHJlZSBtb2R1bGVzPyBJIGNhbiBsb29rIGNv ZGUgY2hhbmdlcyBidXQgdGhlIHRleHQgYWJvdmUgY29udGFpbnMKdG9vIG1hbnkgd29yZHMgdG8g bmFpbCBhbnl0aGluZyBkb3duLiBJJ20gY29uZnVzZWQuCgo+IEluIHBhcnRpY3VsYXIsIGl0IHNl dHMgdGhlIGNyZWRlbnRpYWxzIGZvciB0aGUgcGxhdGZvcm0gaGllcmFyY2h5Lgo+IFRoZSBwbGF0 Zm9ybSBoaWVyYXJjaHkgaXMgZXNzZW50aWFsbHkgdGhlICJyb290IiBhY2NvdW50IG9mIHRoZSBU UE0sCj4gc28gaXQncyBjcml0aWNhbCB0aGF0IHRob3NlIGNyZWRlbnRpYWxzIGJlIHNldCBiZWZv cmUgdGhlIFRQTSBpcwo+IGV4cG9zZWQgdG8gdXNlci1zcGFjZS4gIChUaGUgcGxhdGZvcm0gY3Jl ZGVudGlhbHMgYXJlbid0IHBlcnNpc3RlZCBpbgo+IHRoZSBUUE0gYW5kIG11c3QgYmUgc2V0IGJ5 IHRoZSBwbGF0Zm9ybSBvbiBldmVyeSBib290LikgIElmIHRoZSBkcml2ZXIKPiByZWdpc3RlcnMg dGhlIFRQTSBiZWZvcmUgZG9pbmcgaW5pdGlhbGl6YXRpb24sIHRoZXJlJ3MgYSBjaGFuY2UgdGhh dAo+IHNvbWV0aGluZyBlbHNlIGNvdWxkIGFjY2VzcyB0aGUgVFBNIGJlZm9yZSB0aGUgcGxhdGZv cm0gY3JlZGVudGlhbHMKPiBnZXQgc2V0LgoKTWF5YmUuIE5vdCBzdXJlIHlldCB3aGVyZSB0byBk cmF3IHRoZSBsaW5lIGVnIHNob3VsZCBUU1MyIGRhZW1vbiB0byBkbwppdCBmb3IgZXhhbXBsZS4K CkphbWVzPyBQaGlsaXA/CgovSmFya2tvCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBvZiBh IG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZv IGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK