]> www.infradead.org Git - linux-platform-drivers-x86.git/commitdiff
char: tpm: Fix possible memory leak in tpm_bios_measurements_open()
authorJoe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Thu, 27 Jun 2024 06:31:09 +0000 (15:31 +0900)
committerJarkko Sakkinen <jarkko@kernel.org>
Mon, 1 Jul 2024 15:50:02 +0000 (15:50 +0000)
In tpm_bios_measurements_open(), get_device() is called on the device
embedded in struct tpm_chip. In the error path, however, put_device() is
not called. This results in a reference count leak, which prevents the
device from being properly released. This commit makes sure to call
put_device() when the seq_open() call fails.

Cc: stable@vger.kernel.org # +v4.18
Fixes: 9b01b5356629 ("tpm: Move shared eventlog functions to common.c")
Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
drivers/char/tpm/eventlog/common.c

index 639c3f395a5afc461e495d5a175f332496ff1f43..4c0bbba64ee500f9fa3c3feab2f4cdffbf49563c 100644 (file)
@@ -47,6 +47,8 @@ static int tpm_bios_measurements_open(struct inode *inode,
        if (!err) {
                seq = file->private_data;
                seq->private = chip;
+       } else {
+               put_device(&chip->dev);
        }
 
        return err;