浏览代码

tpm: Fix suspend regression

Fix the suspend regression due to the wrong way of retrieving the
chip structure. The suspend functions are attached to the hardware
device, not the chip and thus must rely on drvdata.

Fixes: e89f8b1ade9cc1a ("tpm: Remove all uses of drvdata from the TPM Core")
Reported-by: Jeremiah Mahler <jmmahler@gmail.com>
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Tested-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Tested-by: Jeremiah Mahler <jmmahler@gmail.com>
Acked-by: Jarkko Sakkinen <jarkko.sakkine@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkine@linux.intel.com>
Stefan Berger 9 年之前
父节点
当前提交
ec03c50b13
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      drivers/char/tpm/tpm-interface.c

+ 2 - 2
drivers/char/tpm/tpm-interface.c

@@ -934,7 +934,7 @@ static struct tpm_input_header savestate_header = {
  */
  */
 int tpm_pm_suspend(struct device *dev)
 int tpm_pm_suspend(struct device *dev)
 {
 {
-	struct tpm_chip *chip = to_tpm_chip(dev);
+	struct tpm_chip *chip = dev_get_drvdata(dev);
 	struct tpm_cmd_t cmd;
 	struct tpm_cmd_t cmd;
 	int rc, try;
 	int rc, try;
 
 
@@ -995,7 +995,7 @@ EXPORT_SYMBOL_GPL(tpm_pm_suspend);
  */
  */
 int tpm_pm_resume(struct device *dev)
 int tpm_pm_resume(struct device *dev)
 {
 {
-	struct tpm_chip *chip = to_tpm_chip(dev);
+	struct tpm_chip *chip = dev_get_drvdata(dev);
 
 
 	if (chip == NULL)
 	if (chip == NULL)
 		return -ENODEV;
 		return -ENODEV;