summaryrefslogtreecommitdiffstats
path: root/drivers/char/tpm/tpm_of.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/tpm/tpm_of.c')
-rw-r--r--drivers/char/tpm/tpm_of.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/char/tpm/tpm_of.c b/drivers/char/tpm/tpm_of.c
index 36df9df4c472..7dee42d7b5e0 100644
--- a/drivers/char/tpm/tpm_of.c
+++ b/drivers/char/tpm/tpm_of.c
@@ -29,13 +29,16 @@ int tpm_read_log_of(struct tpm_chip *chip)
struct tpm_bios_log *log;
log = &chip->log;
- if (chip->dev.parent->of_node)
+ if (chip->dev.parent && chip->dev.parent->of_node)
np = chip->dev.parent->of_node;
else
return -ENODEV;
sizep = of_get_property(np, "linux,sml-size", NULL);
- if (sizep == NULL)
+ basep = of_get_property(np, "linux,sml-base", NULL);
+ if (sizep == NULL && basep == NULL)
+ return -ENODEV;
+ if (sizep == NULL || basep == NULL)
return -EIO;
if (*sizep == 0) {
@@ -43,10 +46,6 @@ int tpm_read_log_of(struct tpm_chip *chip)
return -EIO;
}
- basep = of_get_property(np, "linux,sml-base", NULL);
- if (basep == NULL)
- return -EIO;
-
log->bios_event_log = kmalloc(*sizep, GFP_KERNEL);
if (!log->bios_event_log)
return -ENOMEM;