Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f3b193d authored by Jarkko Sakkinen's avatar Jarkko Sakkinen
Browse files

tpm: fix: return rc when devm_add_action() fails



Call put_device() and return error code if devm_add_action() fails.

Signed-off-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Reported-by: default avatarJason Gunthorpe <jgunthorpe@obsidianresearch.com>
Fixes: 8e0ee3c9 ("tpm: fix the cleanup of struct tpm_chip")
parent c0b5eed1
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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;
}