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

Commit 2490c681 authored by David Smith's avatar David Smith Committed by Linus Torvalds
Browse files

TPM: fix suspend and resume failure



The savestate command structure was being overwritten by the result of
running the TPM_SaveState command after one run, so make it a local
variable to the function instead of a global variable that gets
overwritten.

Acked-by: default avatarPavel Machek <pavel@ucw.cz>
Cc: Kent Yoder <shpedoikal@gmail.com>
Cc: Marcel Selhorst <tpm@selhorst.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 40d6a146
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -1046,12 +1046,6 @@ void tpm_remove_hardware(struct device *dev)
}
}
EXPORT_SYMBOL_GPL(tpm_remove_hardware);
EXPORT_SYMBOL_GPL(tpm_remove_hardware);


static u8 savestate[] = {
	0, 193,			/* TPM_TAG_RQU_COMMAND */
	0, 0, 0, 10,		/* blob length (in bytes) */
	0, 0, 0, 152		/* TPM_ORD_SaveState */
};

/*
/*
 * We are about to suspend. Save the TPM state
 * We are about to suspend. Save the TPM state
 * so that it can be restored.
 * so that it can be restored.
@@ -1059,6 +1053,12 @@ static u8 savestate[] = {
int tpm_pm_suspend(struct device *dev, pm_message_t pm_state)
int tpm_pm_suspend(struct device *dev, pm_message_t pm_state)
{
{
	struct tpm_chip *chip = dev_get_drvdata(dev);
	struct tpm_chip *chip = dev_get_drvdata(dev);
	u8 savestate[] = {
		0, 193,		/* TPM_TAG_RQU_COMMAND */
		0, 0, 0, 10,	/* blob length (in bytes) */
		0, 0, 0, 152	/* TPM_ORD_SaveState */
	};

	if (chip == NULL)
	if (chip == NULL)
		return -ENODEV;
		return -ENODEV;