Re: [PATCH RFC v2 5/5] tpm2: expose resource manager via a device link /dev/tpms<n>

From: Jason Gunthorpe
Date: Thu Jan 12 2017 - 13:42:10 EST


On Thu, Jan 12, 2017 at 07:46:08PM +0200, Jarkko Sakkinen wrote:

> struct tpm_chip {
> - struct device dev;
> - struct cdev cdev;
> + struct device dev, devrm;

Hum.. devrm adds a new kref but doesn't do anything with the release
function, so that is going to use after free, ie here:

> put_device(&chip->dev);
>+ put_device(&chip->devrm);
> return ERR_PTR(rc);

And other places.

One solution is to get_device(chip->dev) after
device_initialize(dev->rm) and add a devrm->dev.release function to
do put_device(chip->dev)

Jason