aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/char/tpm/tpm_of.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/char/tpm/tpm_of.c b/drivers/char/tpm/tpm_of.c
index 83c26bffb150..12a86dda3b69 100644
--- a/drivers/char/tpm/tpm_of.c
+++ b/drivers/char/tpm/tpm_of.c
@@ -29,7 +29,8 @@ int tpm_read_log_of(struct tpm_chip *chip)
29 struct tpm_bios_log *log; 29 struct tpm_bios_log *log;
30 30
31 log = &chip->log; 31 log = &chip->log;
32 np = of_find_node_by_name(NULL, "vtpm"); 32 if (chip->dev.parent->of_node)
33 np = chip->dev.parent->of_node;
33 if (!np) { 34 if (!np) {
34 pr_err("%s: ERROR - IBMVTPM not supported\n", __func__); 35 pr_err("%s: ERROR - IBMVTPM not supported\n", __func__);
35 return -ENODEV; 36 return -ENODEV;
@@ -55,18 +56,15 @@ int tpm_read_log_of(struct tpm_chip *chip)
55 if (!log->bios_event_log) { 56 if (!log->bios_event_log) {
56 pr_err("%s: ERROR - Not enough memory for BIOS measurements\n", 57 pr_err("%s: ERROR - Not enough memory for BIOS measurements\n",
57 __func__); 58 __func__);
58 of_node_put(np);
59 return -ENOMEM; 59 return -ENOMEM;
60 } 60 }
61 61
62 log->bios_event_log_end = log->bios_event_log + *sizep; 62 log->bios_event_log_end = log->bios_event_log + *sizep;
63 63
64 memcpy(log->bios_event_log, __va(*basep), *sizep); 64 memcpy(log->bios_event_log, __va(*basep), *sizep);
65 of_node_put(np);
66 65
67 return 0; 66 return 0;
68 67
69cleanup_eio: 68cleanup_eio:
70 of_node_put(np);
71 return -EIO; 69 return -EIO;
72} 70}