|
@@ -88,6 +88,7 @@ struct tpm_chip *tpmm_chip_alloc(struct device *dev,
|
|
|
const struct tpm_class_ops *ops)
|
|
|
{
|
|
|
struct tpm_chip *chip;
|
|
|
+ int rc;
|
|
|
|
|
|
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
|
|
if (chip == NULL)
|
|
@@ -136,7 +137,11 @@ struct tpm_chip *tpmm_chip_alloc(struct device *dev,
|
|
|
chip->cdev.owner = chip->pdev->driver->owner;
|
|
|
chip->cdev.kobj.parent = &chip->dev.kobj;
|
|
|
|
|
|
- devm_add_action(dev, (void (*)(void *)) put_device, &chip->dev);
|
|
|
+ rc = devm_add_action(dev, (void (*)(void *)) put_device, &chip->dev);
|
|
|
+ if (rc) {
|
|
|
+ put_device(&chip->dev);
|
|
|
+ return ERR_PTR(rc);
|
|
|
+ }
|
|
|
|
|
|
return chip;
|
|
|
}
|