Jarkko, On Sun, Nov 08, 2015 at 09:51:07AM +0200, Jarkko Sakkinen wrote: > __compat_only_sysfs_link_entry_to_kobj() was unconditionally called for > TPM1 chips, which caused crash on Acer C720 laptop where DSM for the > ACPI object did not exist. > > There are two reasons for unwanted behavior: > > * The code did not check whether > __compat_only_sysfs_link_entry_to_kobj() returned -ENOENT. This is > OK. It just meanst that ppi is not available. > * The code did not clean up properly. Compat link should added only > after all other init is done. > > This patch sorts out these issues. > > Fixes: 9b774d5cf2db > Reported-by: Jeremiah Mahler <[email protected]> > Signed-off-by: Jarkko Sakkinen <[email protected]> > Tested-by: Jeremiah Mahler <[email protected]> > --- > drivers/char/tpm/tpm-chip.c | 18 ++++++++++-------- > 1 file changed, 10 insertions(+), 8 deletions(-) > > diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c > index a5cdce7..45cc39a 100644 > --- a/drivers/char/tpm/tpm-chip.c > +++ b/drivers/char/tpm/tpm-chip.c > @@ -226,14 +226,6 @@ int tpm_chip_register(struct tpm_chip *chip) > if (rc) > goto out_err; > > - if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) { > - rc = __compat_only_sysfs_link_entry_to_kobj(&chip->pdev->kobj, > - &chip->dev.kobj, > - "ppi"); > - if (rc) > - goto out_err; > - } > - > /* Make the chip available. */ > spin_lock(&driver_lock); > list_add_tail_rcu(&chip->list, &tpm_chip_list); > @@ -241,6 +233,16 @@ int tpm_chip_register(struct tpm_chip *chip) > > chip->flags |= TPM_CHIP_FLAG_REGISTERED; > > + if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) { > + rc = __compat_only_sysfs_link_entry_to_kobj(&chip->pdev->kobj, > + &chip->dev.kobj, > + "ppi"); > + if (rc && rc != -ENOENT) { > + tpm_chip_unregister(chip); > + return rc; > + } > + } > + > return 0; > out_err: > tpm1_chip_unregister(chip); > -- > 2.5.0 >
This patch doesn't apply to the latest linux-next (20151109). I think I may be missing a dependent patch. Do you know which one? -- - Jeremiah Mahler -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

