James Bottomley <[email protected]> wrote on 01/04/2017 01:19:36 PM:
> From: James Bottomley <[email protected]>
> To: Stefan Berger/Watson/IBM@IBMUS, Jarkko Sakkinen
> <[email protected]>
> Cc: [email protected], tpmdd-
> [email protected], open list <[email protected]>
> Date: 01/04/2017 01:19 PM
> Subject: Re: [tpmdd-devel] [PATCH RFC 2/4] tpm: validate TPM 2.0
commands
>
> On Wed, 2017-01-04 at 13:04 -0500, Stefan Berger wrote:
> > Jarkko Sakkinen <[email protected]> wrote on 01/02/2017
> > 08:22:08 AM:
> >
> > > --- a/drivers/char/tpm/tpm2-cmd.c
> > > +++ b/drivers/char/tpm/tpm2-cmd.c
> > > @@ -943,7 +943,9 @@ EXPORT_SYMBOL_GPL(tpm2_probe);
> > > */
> > > int tpm2_auto_startup(struct tpm_chip *chip)
> > > {
> > > + u32 nr_commands;
> > > int rc;
> > > + int i;
> > >
> > > rc = tpm_get_timeouts(chip);
> > > if (rc)
> > > @@ -967,8 +969,49 @@ int tpm2_auto_startup(struct tpm_chip *chip)
> > > }
> > > }
> > >
> > > + rc = tpm2_get_tpm_pt(chip, TPM_PT_TOTAL_COMMANDS, &nr_commands,
> > NULL);
> > > + if (rc)
> > > + return rc;
> > > +
> > > + chip->cc_attrs_tbl = devm_kzalloc(&chip->dev, 4 * nr_commands,
> > > + GFP_KERNEL);
> >
> > For some reason this devm_kzalloc bombs for the vtpm proxy driver.
> > The only reason I could come up with is that it's being called before
> > tpm_add_char_device() has been called.
>
> No, it should be sufficient that chip->dev be initialized (which it is
> in tpm_chip_alloc()). What's the error you're getting?
>
> It does look like the intention was to have non-devm with
> tpm_chip_alloc() and devm with tpmm_chip_alloc(), but devm_kzalloc
> should just work regardless because it's tied to the device model.
I am running a vtpm proxy test suite. Here's the error:
[ 67.596172] tpm tpm1: Operation Canceled
[ 67.699052] ------------[ cut here ]------------
[ 67.699811] WARNING: CPU: 12 PID: 870 at mm/page_alloc.c:3511
__alloc_pages_slowpath+0x771/0xaf0
[ 67.701198] Modules linked in:
[ 67.701400] tpm_vtpm_proxy
[ 67.701642] nf_conntrack_netbios_ns nf_conntrack_broadcast
[ 67.702450] ip6t_rpfilter
[ 67.702662] ip6t_REJECT nf_reject_ipv6 xt_conntrack ebtable_nat
[ 67.703618] ebtable_broute
[ 67.703784] bridge stp llc ebtable_filter
[ 67.704213] ebtables
[ 67.704367] ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6
[ 67.705310] nf_nat_ipv6
[ 67.705523] ip6table_mangle ip6table_security ip6table_raw
ip6table_filter ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4
nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle iptable_security
iptable_raw nfsd auth_rpcgss nfs_acl lockd crc32c_intel tpm_tis
virtio_balloon i2c_piix4 tpm_tis_core
[ 67.711414] i2c_core
[ 67.711610] joydev tpm pcspkr grace sunrpc
[ 67.712170] 8139too
[ 67.712360] virtio_pci 8139cp virtio_ring serio_raw
[ 67.713504] ata_generic
[ 67.713706] mii floppy pata_acpi virtio
[ 67.714891] CPU: 12 PID: 870 Comm: kworker/12:2 Not tainted 4.9.0-rc5+
#652
[ 67.715054] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
rel-1.10.1-0-g8891697-prebuilt.qemu-project.org 04/01/2014
[ 67.715054] Workqueue: tpm-vtpm vtpm_proxy_work [tpm_vtpm_proxy]
[ 67.715054] ffffc90002b6fa80 ffffffff8140cad1
[ 67.715054] 0000000000000000
[ 67.715054] 0000000000000000
[ 67.715054] ffffc90002b6fac0 ffffffff810a8b6b 00000db7aba7d298
00000000026000c0
[ 67.715054] 0000000000000000 0000000000000014 000000000260c0c0
ffff8802aba7ca00
[ 67.715054] Call Trace:
[ 67.715054] [<ffffffff8140cad1>] dump_stack+0x63/0x82
[ 67.715054] [<ffffffff810a8b6b>] __warn+0xcb/0xf0
[ 67.715054] [<ffffffff810a8c9d>] warn_slowpath_null+0x1d/0x20
[ 67.715054] [<ffffffff811da6f1>] __alloc_pages_slowpath+0x771/0xaf0
[ 67.715054] [<ffffffff811d95e6>] ? get_page_from_freelist+0x526/0xaf0
[ 67.715054] [<ffffffff8179e583>] ? __mutex_unlock_slowpath+0xe3/0x1a0
[ 67.715054] [<ffffffff811dad9f>] __alloc_pages_nodemask+0x32f/0x390
[ 67.715054] [<ffffffff8123a4fe>] kmalloc_large_node+0x7e/0xe0
[ 67.715054] [<ffffffff81241885>]
__kmalloc_node_track_caller+0x225/0x2c0
[ 67.715054] [<ffffffffa00c0f42>] ? tpm2_auto_startup+0xa2/0x2e0 [tpm]
[ 67.715054] [<ffffffff815572b7>] devm_kmalloc+0x27/0x70
[ 67.715054] [<ffffffffa00c0f42>] tpm2_auto_startup+0xa2/0x2e0 [tpm]
[ 67.715054] [<ffffffffa00bf3bc>] tpm_chip_register+0x5c/0x200 [tpm]
[ 67.715054] [<ffffffffa029c309>] vtpm_proxy_work+0x19/0x40
[tpm_vtpm_proxy]
[ 67.715054] [<ffffffff810c4593>] process_one_work+0x1f3/0x560
[ 67.715054] [<ffffffff810c4511>] ? process_one_work+0x171/0x560
[ 67.715054] [<ffffffff810c494e>] worker_thread+0x4e/0x480
[ 67.715054] [<ffffffff810c4900>] ? process_one_work+0x560/0x560
[ 67.715054] [<ffffffff810c4900>] ? process_one_work+0x560/0x560
[ 67.715054] [<ffffffff810ca994>] kthread+0xf4/0x110
[ 67.715054] [<ffffffff810ca8a0>] ? kthread_park+0x60/0x60
[ 67.715054] [<ffffffff817a1c15>] ret_from_fork+0x25/0x30
[ 67.746343] ---[ end trace 4d9abf66365987bd ]---
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
tpmdd-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tpmdd-devel