diff options
-rw-r--r-- | drivers/char/tpm/tpm_of.c | 6 |
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 | ||
69 | cleanup_eio: | 68 | cleanup_eio: |
70 | of_node_put(np); | ||
71 | return -EIO; | 69 | return -EIO; |
72 | } | 70 | } |