On Wed, Oct 15, 2014 at 01:35:14PM +0200, Jarkko Sakkinen wrote:
+int tpm2_sysfs_add_device(struct tpm_chip *chip)
+{
+ struct pcr_bank *pcr_bank;
+ struct kobject *pcrs_kobj;
+ struct device *dev = chip->dev;
+ int rc;
+
+ rc = sysfs_create_group(&chip->vendor.miscdev.this_device->kobj,
+ &tpm_dev_group);
+ if (rc) {
+ dev_err(dev, "failed to create sysfs attributes, %d\n", rc);
+ return rc;
+ }
You just raced and created sysfs files _after_ userspace saw that your
device was enabled.
+ pcrs_kobj = kobject_create_and_add("pcrs",
+ &chip->vendor.miscdev.this_device->kobj);
Ick, no no no no. Never create a kobject under a 'struct device'. You
just lost all libudev support for any attribute you created under here,
not good at all. Use a "real" device if you really want a sub-device,
not a kobject.
thanks,
greg k-h