Patch "vTPM: Fix missing NULL check" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
vTPM: Fix missing NULL check
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
vtpm-fix-missing-null-check.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
31574d321c70f6d3b40fe98f9b2eafd9a903fef9Mon Sep 17 00:00:00 2001
From: "Hon Ching \\(Vicky\\) Lo" <[email protected]>
Date: Wed, 15 Mar 2017 01:28:07 -0400
Subject: vTPM: Fix missing NULL check
From: Hon Ching \(Vicky\) Lo <[email protected]>
commit 31574d321c70f6d3b40fe98f9b2eafd9a903fef9 upstream.
The current code passes the address of tpm_chip as the argument to dev_get_drvdata() without prior NULL check in tpm_ibmvtpm_get_desired_dma. This resulted an oops during kernel boot when vTPM is enabled in Power partition configured in active memory sharing mode.
The vio_driver's get_desired_dma() is called before the probe(), which for vtpm is tpm_ibmvtpm_probe, and it's this latter function that initializes the driver and set data. Attempting to get data before the probe() caused the problem.
This patch adds a NULL check to the tpm_ibmvtpm_get_desired_dma.
--- drivers/char/tpm/tpm_ibmvtpm.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
drivers/char/tpm/tpm_ibmvtpm.c +11 -6
@@ -295,6 +295,8 @@ static int tpm_ibmvtpm_remove(struct vio }kfree (ibmvtpm); +/* For tpm_ibmvtpm_get_desired_dma */ +dev_set_drvdata (&vdev->dev,NULL );return 0 ; }
@@ -309,13 +311,16 @@ static int tpm_ibmvtpm_remove(struct viostatic unsigned long tpm_ibmvtpm_get_desired_dma (struct vio_dev *vdev) {struct tpm_chip *chip =dev_get_drvdata (&vdev->dev); -struct ibmvtpm_dev *ibmvtpm =dev_get_drvdata (&chip->dev); +struct ibmvtpm_dev *ibmvtpm; -/* ibmvtpm initializes at probe time, so the data we are -* asking for may not be set yet. Estimate that 4K required -* for TCE-mapped buffer in addition to CRQ. -*/ -if (!ibmvtpm) +/* +* ibmvtpm initializes at probe time, so the data we are +* asking for may not be set yet. Estimate that 4K required +* for TCE-mapped buffer in addition to CRQ. +*/ +if (chip) + ibmvtpm =dev_get_drvdata (&chip->dev); +else return CRQ_RES_BUF_SIZE +PAGE_SIZE ;return CRQ_RES_BUF_SIZE + ibmvtpm->rtce_size;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/vtpm-fix-missing-null-check.patch