Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> 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.

   Stefan